Side projectRobin
A shared feed log for a newborn, built for two parents to use on their own phones — one button, always in sync, designed to be usable one-handed in the dark at 3am.
What it does
The entire interaction is one circular button. Tap it when a feed starts, tap it again when it ends, then say whether it was breast milk or formula and how many ml. That's it.
Both phones read the same underlying state, so starting a feed on one phone shows it running live on the other — and the app physically can't let two feeds be open at once. No more "did you already feed her?" texts at 3am.
Beyond the button, there's a log of every feed grouped by day (editable, in case something's wrong or forgotten), and a trends view showing daily milk intake split by source.
How it's built
The "feed in progress" state isn't a separate flag anywhere — it's simply a database row with ended_at IS NULL. A partial unique index on that condition is what physically stops two open feeds from ever existing at the same time. Both phones just poll and re-render off that one row, which is what keeps them in sync without any bespoke real-time layer.
- Framework
- Next.js (App Router)
- Auth
- Google sign-in via Clerk, plus a server-side allowlist checked on every page and server action — independent of whatever Clerk itself permits
- Database
- Postgres (Neon) via Drizzle ORM
- Hosting
- Vercel
All the personal details — the baby's name, birth date, timezone — are read from environment variables rather than hardcoded, so the source code itself is fully generic and safe to keep in a private GitHub repo.
Design note
The whole interface is themed like a nightlight rather than a typical app — a warm, dark plum background with a low-blue amber accent, deliberately chosen so that checking on a feed at 3am doesn't blast anyone with a bright white screen.