
A household pet health record built to answer one question the moment it opens: does anything need attention today? It tracks boosters, medication refills, vet visits and weight history across every pet in the home, then rolls the day into a single medication round — what to give, to whom, right now.
Dosing is derived from the frequency text transcribed off a prescription label — everyday wording, the Latin abbreviations vets still write (BID, TID, QID), interval notation like q12h. Anything it can't place gets its own section instead of disappearing, because a missed dose matters more than a tidy list.
Sharing is enforced in the database rather than the client: row-level security on all 26 tables, per-pet viewer, editor and co-owner roles, TOTP multi-factor auth, and expiring read-only vet links that need no account. It's offline-first by design, with a persisted query cache for reads and an IndexedDB outbox that replays changes once the device reconnects.
What I'd do differently
The rate limiter I had Claude Code build read correctly and passed its unit tests, and it limited nothing. It counted requests against a header that changed on every request, so every one looked like a new client. A unit test can't catch that, because the test supplies the key itself. Now, when something is supposed to say no, I check that it actually says no against the real deployment before I trust it.