Adam Perlis
← Work
02 / 10Launched

Gaia Baby Tracker. A shared baby tracker for iPhone. One baby log for everyone.

Role
Founder · product, design and engineering
Platform
iPhone, Apple Watch
Status
Launched
Stack
Expo and React Native, TypeScript, Zustand, SwiftUI (Apple Watch and widgets), Vercel Functions, Neon Postgres, Better Auth, Model Context Protocol

Overview

Gaia is a free baby log that every caregiver shares. Each parent, grandparent or nanny signs in with their own account, and a feed, nap or diaper logged on one phone shows up on the others within seconds. No subscription, no paywall, no ads.

Why I built it

Gaia is our daughter’s middle name, and the app was our family’s log before it was anyone else’s. The job is simple: nobody should have to send a text at 4am to ask when the last feed was.

What it does

  • One shared timeline for every caregiver. Invite someone with a six-character code, and anyone can stop a timer someone else started.
  • Feeds, diapers, sleep, pumping, solids, tummy time, medicine and milestones, each two taps from the home screen.
  • Nap prediction from recent wake windows, shown as a range.
  • Growth charts against the WHO Child Growth Standards, with corrected age for babies born early.
  • Import from other baby trackers or any CSV, so a family keeps its history.
  • Apple Watch, Home and Lock Screen widgets, offline logging, and eight languages.
  • A read-only MCP connector, so a caregiver can ask an AI assistant about their baby’s real data.

How it’s built

The app is Expo and React Native in TypeScript, with SwiftUI for the watch app and widgets. The API is one Vercel function over Neon Postgres, with Better Auth for accounts.

Authorization has two layers. The API scopes every query to the caller’s family, and Postgres row-level security enforces the same rule underneath, so a handler with a missing WHERE clause still can’t read another family’s log. With no identity set, every table returns zero rows.

I kept sync deliberately plain. One events table backs all eight trackers, so the timeline is one query and sync is one cursor. Rather than hold a socket open on a phone that’s always being suspended, the client polls: every four seconds while you’re looking, every twenty when idle, never in the background. Writes are optimistic with IDs made on the device, so a retry can’t duplicate an entry.

Percentiles are computed on the phone; no measurement is sent anywhere to produce one. The palette uses a single ink: one navy carries every label, and the activity pastels are only ever fills, because they’re too light to carry text. A script checks every colour role for contrast in both themes.

Where it is now

Gaia is live on the App Store for iPhone and Apple Watch, free, in eight languages. Android isn’t available yet. A Food section with recipes, meal planning and feeding guides is in beta. More at gaiababy.app.

Want something like this for your product?

I help founders and teams design, build and ship apps.