Inventory
- Create, edit and delete items
- Track quantities per item
- Organize household inventory by category
Building
One place for household inventory and admin, built to keep working even when the WiFi doesn't.
practical / calm / local-first
Why I built it
HomeVault started as a practical personal app for managing the stuff around the house that's easy to lose track of: inventory, appliances, subscriptions, the boring administration nobody enjoys doing.
I wanted one place for household inventory and everyday household admin, without it turning into its own complicated administration system. A lot of "organizing" apps end up creating more admin than they save. That was the thing to actively avoid.
A major design principle from the start was offline-first. A household inventory app that stops being useful the moment the WiFi drops isn't actually useful: you're standing in the garage or in front of a cupboard, not sitting at a desk with a stable connection.
What it does
HomeVault is a mobile app for tracking household inventory, shopping needs, appliances and subscriptions in one place. It's built offline-first, and designed from the ground up with household sharing in mind, eventually between partners.
Key features
How it works
Local-first interaction, snapshot pull, last-write-wins
Architecture notes
Local SQLite is the core of the app, not an afterthought layered on top. Every interaction happens against the local database first, so the app never waits on a network round-trip to feel responsive.
Supabase is planned/used underneath for authentication and Postgres-backed synchronization, but it sits behind the local-first experience rather than being the foundation of it. Sync runs on login/app start, when the app returns to the foreground, manually on request, and through online writes where that makes sense.
A household inventory app shouldn't become useless just because connectivity is unavailable or slow. That's the whole point of building it this way instead of the other way around.
Tech stack
Interesting technical details
Detail
Every read and write happens against local SQLite first. The UI never blocks on a network call to feel usable.
Detail
Sync pulls a snapshot of household state rather than reconciling incremental diffs, which keeps the conflict model simple to reason about.
Detail
Conflicts resolve last-write-wins. For household inventory data, that's a deliberate trade-off: simplicity beats a complex merge strategy here.
Detail
Synchronization runs on login/app start, on returning to the foreground, on manual request, and via online writes where appropriate.
Challenges & decisions
Decision
It would have been simpler to build an online app with a cache bolted on for bad connectivity. Making local SQLite the actual source of truth, with sync as a layer behind it rather than the foundation, was the harder but more honest choice for what this app needs to be.
Decision
Good household software has to be quicker than opening a drawer. If checking or updating HomeVault takes longer than just looking at the actual shelf, the app has already failed at its one job. That constraint shapes almost every UI decision.
Current status
Actively being built, not yet publicly released.
What's next
Building offline-first from day one is more work up front than bolting it on later, but it's the only way the app stays honest about what "works everywhere" actually means. Everything else (sync, sharing, accounts) has to fit around that, not the other way around.