
HomeBook
Private repoA memory of the house.
Document where everything is and find it again. Search for "drill" and get back the shelf it sits on, not a guess.
- lines of Dart
- 83k
- tests
- 1,295
- live modules
- 7
lines of Dart
tests
live modules
Why this exists
Everything in a house has a place, and nobody can hold all of those places in their head. The question is never "what do we own", it is "where did it go", and the answer usually lives with one person who happens to be out.
Searching for "drill" should return Park Street, ground floor, garage, tool cabinet, drawer 2. A full path, not a category.
Local-first, with a shared identity layer
A household inventory is two different problems wearing one name. Who you are and who you share a house with is genuinely a sync problem, and it belongs in a hosted service. What is actually inside your house is nobody else’s business.
So the two are split. Accounts and sharing live in Firebase. The contents live where you choose: a hosted tier with a capped trial, your own server, or this phone and nowhere else. Changing your mind about storage does not cost you your account.
Seven modules, and a QA pass that trusts the device over the emulator
Contacts, maintenance, plant care, and pipe fittings went live this stretch, each carrying its own schema migration rather than a shared one, because a household’s pipe fittings have nothing structurally in common with its list of people. The photo and document archive is now streamed and encrypted in chunks rather than held in memory whole, which is the difference between a phone that copes with a large attachment and one that does not.
Several bugs here only existed on a real phone: reminders that fired into a void because the receivers were never registered in the manifest, a boot receiver that could not help a sideloaded install, a gesture bar drawn inside a bottom sheet. None of them showed up on the emulator, so the QA pass now runs on a device by policy, not by preference.
A deliberate accessibility sweep followed: every icon button without a tooltip, every tap target under 40 logical pixels, every screen unmeasured at the largest system font. What it found and fixed is recorded in the QA report rather than asserted here, because a claim like that is exactly the kind that should be checked rather than taken on trust.
Interested in the rest?
The full history, the architecture decisions, and the code behind this are available on request.