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.
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.

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.
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.




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:
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.