Heima App: A Home Management App Built with Passion

Table of contents
Heima App: A Home Management App Built with Passion

TL;DR:

Heima is a home management app I originally built for my family, evolving from a simple idea in 2012 to a fully featured app launched in 2021. It includes smart shopping lists, meal planning, chore tracking with XP, and more. Despite competition and personal challenges—including a stroke and my daughter’s leukemia—I chose to double down on Heima in 2024. The app is powered by a Golang microservice backend, a Flutter frontend, and runs on Kubernetes at DigitalOcean. I’m now focusing on growing the app and would love feedback and support from the community!

Download the app here:

When and How the Idea Came To Be

Back in 2012, when I had my first child, I realized the need for a great home management tool. I dreamt about an app that could help us with groceries, chores, and daily planning. My wife and I tried several apps like Apple Reminders and Google Tasks, but none worked exactly as we wanted.

Me and our first child
Me and our first child

Time passed, and besides making a few mockups and proof-of-concept apps, I didn’t do much with the idea. However, when we were expecting our third child, I finally had a working app that we started using daily. Initially, it was just for our family, but after showing it to friends, they wanted to use it too. That motivated me to refine it further, add more features, and eventually publish it on the App Store and Google Play in August 2021.

I named the app Heima, which means “home” in my dialect of Norwegian. The word has roots in old Norse languages, and the logo represents the rune for “home” or “homestead.”

I like doing things the right way, so I focused on solving the biggest pain point first: shopping lists. I built the shopping list feature using WebSockets to allow real-time collaboration. I also integrated grocery product data from open APIs, and using store-specific sorting algorithms, Heima can predict the order in which products appear in a store based on past shopping behaviors.

Another key feature is the meal planner, where users can import their favorite recipes and add ingredients directly to their shopping list. Other features include chat, loyalty card storage (which automatically appears when checking out at a store), and stock tracking to keep an eye on freezer and pantry supplies, and gets a notification when the supply is near expiration date.

The latest addition is chore tracking. When did you last change your sheets? Now, Heima lets you score XP for chores, compete with family members, and get notifications when tasks are due.

The Other “Heima”

When I first released Heima, I was excited to see others using something I built. My goal wasn’t to dominate the market or become the most popular app, but if I could make life a little easier for families and possibly break even on the costs of running the app, I would consider that a success.

A year after launch, I noticed a sudden increase in Icelandic users. Excited, I spent a weekend adding an Icelandic translation to the app. However, I later discovered that users were actually looking for a different app named Heima—one marketed in Iceland, with similar functionality. Their app wasn’t even out yet, but the confusion was real. It was disheartening to realize that we were essentially competing for the same space with very similar ideas, all while using the same name and colors.

Heima logo
My Heima App logo

Around the same time in 2023, I suffered a brain stroke after a chiropractor treatment. A neck dissection in a blood vessel caused a clot in my brain. I was lucky—my wife got me to the hospital in time, and I recovered quickly. Shortly afterward, I lost my job when the game development startup I worked at ran out of funding. Given everything happening, I put the app on hold.

Then, in early 2024, my youngest daughter was diagnosed with AML leukemia, just before her third birthday. We spent months in a hospital three hours away from home, all while trying to care for our other two kids. Thankfully, she beat cancer, and we are now back to normal life. If you want to read more about that journey, I wrote about it here.

My daughter in the hospital
My daughter in the hospital

In December 2024, I reached a turning point: shut down Heima or go all in. I chose to go all in. The other “Heima” app can do its own thing—I’m doing mine.

How the App is Made

All right, I’m sorry for dragging you through my life story, let’s talk about the technical side of things.

The app is built using a microservice architecture within a monorepo. The backend is written in Golang and communicates with the services via gRPC. Redis is used as the caching layer, but it also plays an important role in pub/sub for the websocket communication and event sourcing. PostgreSQL serves as the primary database, and I use Signoz for error tracking. All of this runs in a Kubernetes cluster on Digital Ocean.

I’ve split the microservices into two groups: common and app specific. The common group includes services that are shared across all of my apps, while the app-specific services are dedicated solely to Heima.

Architecture

  • Backend: Microservice-based, built in Golang
  • Frontend: Built in Flutter
  • Infrastructure: Runs in Kubernetes at DigitalOcean
  • Database: PostgreSQL
  • Caching & Pub/Sub: Redis
  • Observability: SigNoz for error tracking
  • CI/CD: GitLab CI/CD
  • Communication: gRPC
  • Monorepo Structure: Backend microservices are grouped as “common” services (shared across multiple apps) and “app-specific” services (Heima-only)

Microservices Overview

Service Description Group
access Authentication & user management common
authdot OAuth backend common
authdot UI OAuth frontend using Astro.build with Vue common
chat WebSocket-based real-time chat service common
supporting Small features like FAQ, feature flags, and localization common
attachments Handles file & image uploads common
sender Manages email, SMS, and push notifications common
gateway API gateway for all Heima services Heima
frontend Main Heima app, built with Flutter Heima
eventhub WebSocket service for live updates from pub/sub Heima
shopping Shopping list & product management Heima
cookbook Recipe & meal planner (potential future standalone app) Heima
tasks Chore tracking & scheduling Heima
lists General-purpose list management Heima
spaces Household & family space management Heima

DigitalOcean Setup

  • Kubernetes Cluster: 5 nodes, 10 vCPUs, 20GB RAM
  • Managed PostgreSQL
  • Redis for caching & pub/sub
  • Observability Stack: SigNoz, Prometheus, Grafana

Frontend

The frontend is developed using Flutter, with Riverpod for state management. To communicate with the backend, I generated a custom REST client using Swagger Codegen. While the codegen client wasn’t fully up-to-date, I forked the project, applied my changes, and will eventually contribute those back to the project.

The app is available on Android and iOS, with plans for a web version in the future.

Screenshot of the Heima app Screenshot of the Heima app Screenshot of the Heima app Screenshot of the Heima app

What’s Next & How You Can Help

I want to build a community-driven price tracking feature where users help each other find the best prices. I’ve started experimenting with a price tag scanner, which you can read more about here.

I would love your feedback on the app! As a solo developer, I have plenty of ideas but limited resources. I also need help with marketing—I’m a developer, not a marketing expert.

Try the app, give feedback, and let me know if you have ideas!

Download the app here:

My family
My family

Thank you for reading my story and for your support! Send me a email at daniel[at]kaldheim.org if you have any questions or feedback. I’d love to hear from you!

Btw, I’m donating 10% of my income from Heima to childhood cancer research. If you want to support that cause, you can do so by using the app and checking the “donation” checkbox or donating directly to a charity of your choice.

Screenshot of donation screen