About the project
What got me started
I own a house, and I kept losing track of the paperwork. The heating inspection, the chimney sweep certificate, the PV warranty, the receipt for the smoke detectors. All of it lived in a paper folder, a few email attachments, and roughly four thousand photos on my phone.
So I tried the apps. Every one of them wanted a monthly fee and wanted my data on their servers. That felt wrong for this particular job. A house is something you buy once. Why should its record be a subscription?
What I learned
Doing things locally is harder than it sounds. No server means no remote backup to fall back on, no sync, no server-side search. Everything has to work on the device or not at all. I ended up rebuilding a few things I would normally have solved with one API call.
The other thing I learned: "no subscription" is not a marketing line here, it is a constraint on how you build. You get one purchase to make the app good, and then it has to keep working.
How I built it
HausPass is a local-first Expo / React Native app. Everything is stored on the device. No account, no cloud sync, no tracking.
The data model is document-centered. Each asset in the house (heating, PV, smoke detectors, and so on) carries its own documents, warranties, and maintenance dates, instead of living in one big task list. Maintenance templates for the German market ship with the app. The whole record exports as a PDF, and there is a ZIP backup and restore for moving between devices.
For the one-time purchase I use RevenueCat. It is the only part of the app that talks to a third party, which made it the most sensitive thing to get right.
I built it working with an AI coding agent. That let me move fast, but it also meant I had to keep the architecture in my own head rather than letting it drift.
What was hard
The privacy promises were the hard part, not the code. If your pitch is "your data never leaves your device", then every third-party integration is a credibility problem. RevenueCat had to be disclosed properly in the privacy policy and in the Apple Privacy Manifest, in plain language, without pretending it was not there.
Localization was the second trap. Shipping in German and English means correct CFBundleLocalizations, complete translations, and, the part people forget, a full English store listing with English screenshots. The App Store shows what your listing contains, not what your binary claims it supports.
And a small confession: I spent days chasing a light in my house that kept turning itself on and off, convinced some app was misbehaving. It turned out to be my own Home Assistant automations. Building software for a house you live in means you end up debugging your own house.
Built With
- expo.io
- react-native
- revenuecat

Log in or sign up for Devpost to join the conversation.