Retiring the Baby Tracker: A Post-Mortem of a One-Day App

I built a feeding tracker in a single day. It worked perfectly and died within weeks — killed by the one dependency I couldn't provision: spare attention at 3 AM.

The One-Day Build

The git history of this project is comedy in one line:

2026-05-21  Initial commit of baby-tracker

That's it. That's the whole log. One day, one commit, one complete app: a baby feeding tracker on my usual stack — Hono on Cloudflare Workers, React on Vite, D1 for storage. Log a feed, see the history, spot the patterns. Deployed by evening. I was very pleased with myself.

New parents will already know exactly where this story is going.


The Missing Dependency

The app never crashed. The database never lost a row. Technically, it shipped flawless.

What it actually depended on was never in package.json: a human with a free hand and two functioning brain cells, at 3 AM, willing to open a web app and fill in a form.

Here is the situation the app was designed for: you are holding a feeding baby with one arm. You are more tired than you have ever been in your life. The phone is… somewhere. And the app needs you to navigate to it, tap through to the form, enter a time, an amount, and a side. Every two to three hours. Around the clock.

We logged diligently for a while. Then sparsely. Then the data got sparse enough that the charts stopped meaning anything — and a tracker with unreliable data is worse than no tracker, because now it's lying to you with confidence. Somewhere in week three, without any decision being made, we simply… stopped. The app didn't fail. It got out-prioritized by its own subject matter.

So: officially retired. The Worker is decommissioned; the repo stays as a monument.


The Lesson I Keep Re-Learning

Looking at which of my personal apps survive and which die, the pattern is embarrassingly consistent. Apps that demand manual input from a tired human die. Apps that harvest data automatically — or shrink input to near-zero — live.

The survivors in my fleet all obey this law:

  • Tiền doesn't ask me to log expenses — it reads my bank's notification emails and logs them itself.
  • Chia doesn't wait for me to open it — it lives in the Telegram group we already use, and machine-suggested transactions arrive as one-click accepts.
  • Xu collapsed its entire input UI into typing "lunch 80k" at an LLM.

Baby Tracker had no automatable data source. Feeds don't send notification emails. There's no API for a newborn. The only sensor available was an exhausted parent, and that sensor has a duty cycle of approximately zero.


Would Anything Have Saved It?

I've thought about this more than the project deserves:

  • A Telegram bot instead of a web form — send "120" to a chat, done. Honestly might have worked; it worked for our money.
  • A physical button (one of those IoT buttons on the nightstand) — one press per feed, timestamps only. Less data, but data we'd actually have.
  • Voice — "hey, log a feed" — plausible in theory, but a voice assistant near a finally-sleeping baby is a threat, not a feature.

All of these share the same property: they remove the open an app step. That step is where tracking apps go to die.

The meta-lesson, which now gets veto power over every side project: before building anything that tracks, ask where the data enters. If the answer is "a person types it in," the honest name for the project is a chore with a database.

The baby, for the record, is thriving — completely untracked.