Theo Ferguson

babylog

babylog

A baby tracker for the two people actually using it at 3am — feeds, nappies, pumping — built around the one part every other app gets wrong: a nursing timer that belongs to the household rather than to a phone. Expo and React Native shipped to iOS through TestFlight, the same codebase exported as the web app, Django REST Framework and SQLite on a Fly volume behind it. The running timer lives on the server as an in-progress event, so one parent can start it and the other can stop it, and clients send intents rather than computed totals because two phones each PATCHing their own view of the elapsed seconds would clobber each other. A feed lasts as long as the timer actually ran, not start to end, since a feed can be paused and picked up again — a rule that took three rounds to state as an invariant instead of once per reported symptom. Offline nursing runs the same accumulator arithmetic on the device and replays it as queued intents carrying their own timestamps. The newest layer is voice logging, and it is deliberately not an agent: one sentence, one model call constrained to a strict JSON schema, no tools and no loop. What makes it trustworthy is the half that already existed — the model's rows are validated server-side by the same per-type validator the CSV importer uses, then staged on a review screen where every row is editable and nothing is written until a person ticks it. The generation schema is an allowlist rather than a mirror of the payload fields, because a model must never be able to author server-owned timer state. The web app is the same codebase as the phone one, minus the microphone, though accounts are invite-only so the live link is a sign-in screen: https://babylog-app.fly.dev . Github: https://github.com/theoferguson/babylog

Visit project