← Back to list

I Built a Smart Baby FeedingTracker for $25. Here’s How.

Recently my newborn arrived and I was going through the onerous cycle of waking up every 2 to 3 hours for feeding, changing diaper, etc…

Nyan Tun Zaw · 2026-05-03 06:41 · 109 claps · 11.0 min read paywalled
#vibe-coding #baby-feeding #baby-tech #weekend-project #iot
Open on Medium ↗
Wiki topics: 💻 · Programming 📟 · Gadgets & IoT 👨‍👩‍👧 · Family & Parenting

I Built a Smart Baby FeedingTracker for $25. Here’s How.

Recently my newborn arrived and I was going through the onerous cycle of waking up every 2 to 3 hours for feeding, changing diaper, etc., Every new parent knows that, amidst all these, keeping track of all the timings when we fed the baby, the amount, the number of wet diapers and dirty diapers is no easy task especially, when you are sleep deprived and operating in half-zombie mode. However, it is important to get these details right so that when we go to pediatrician for periodic check ups or when the baby is not feeling well, we have accurate data points to assess what is happening. This article will be focussed more on the thought process from end to end, including the design and architecture choices, hardware choices and so on. When I can find some time, I will write a part 2 on my experience vibe coding this with Google’s Gemini.

The Problem

For my first child, I drew up a table on an empty piece of paper and put it beside the baby’s cot so that anyone feeding or changing diaper for the baby can easily log it (the old school way). It looks something like the picture below with the first tick for poop and second tick for pee. This methods works well but it was difficult to see the trends, daily summaries or history easily since we need to find the old papers back and sometimes, the papers get wet due to milk vomits or when the baby pees while changing diaper (happens more often than most people would imagine). Also, we had to bring the papers and pen around when we go out for check ups or any other matters so that we can promptly record without forgetting.

With that, after a couple of weeks, we decided to use mobile apps to keep track instead to solve these problems. We found an app called “Baby Daybook” app on mobile. It was fantastic! It has a simple and easy to use UI and with that we managed to keep track of everything, save with photos when we need to and most importantly, both me and my wife are able to access the same database from our phones so we can see the updates live. This worked fine for our first child.

However, recently, they have changed their licensing model so in order for both my wife and I to see the same database of the child, one of us would need to be on their premium plan, costing SGD 99.99 per year, which is not a huge sum but made me a bit hesitant to pay this amount just so that I could see the data too. Technically, we could share the same account to access on both phones but not really the best security practice since its linked to our personal google accounts (probably being in security for too long made me paranoid about everything). Also, the data is stored in the app’s cloud so there was no easy way to extract / export the data out if we want it for whatever analysis we want to do.

With that, for my second child, I thought there’s got to be a better way.

The Pre-requisites

My requirements are pretty simple. I want something that

  • allows me or any of the family members to easily log whenever we need to feed the baby (breastmilk or formula along with the amount fed), number of dirty diapers and number of wet diapers
  • able to access the logs easily on our phone and see the analytics if we want to and send daily summaries
  • get notifications when someone fed the baby, changed diaper, etc., or when someone forgets to feed the baby for more than 3 hours
  • easy and intuitive enough for our helper to be able to operate when we are not around
  • must not be expensive (since we only need to keep track of these very closely for a couple of months)

With these requirements in mind, I started my research on what could be a possible solution.

Initial Architecture

Firstly, I tried to design what could be the components involved and how everything could work together to achieve the results I want. Below is a rough illustration of what I imagined (courtesy of ChatGPT — I love their image generation capabilities!!).

My initial idea would be to have the follow components:

  1. a simple touch panel to “log” the entries near the baby’s cot,
  2. a web server (to host the touch panel UI and to process the input data),
  3. mobile app (either native or web) to access these data on our mobile phones and get notifications

#1 Simple Touch Panel

Firstly, I needed a small and lightweight touch screen device that I could easily place near the baby’s cot safely. I was looking through various tablets for this purpose but they are either too big, too heavy or too expensive.

As a baseline, I needed something that could access my home Wi-Fi and have a browser so that I could create the UI on the web server which can serve directly via the browser on this touch panel. However, the challenge is most devices that have Wi-Fi, touch screen and has an OS with browser inside cost a couple hundred dollars, which doesn’t fit my requirement of a cheap home made project. There are probably some extremely cheap mobile phones that could do the job but most have issues of overheating and probably not best suited to be a cot-side device.

With that, I have eventually narrowed it down to one potential option: Cheap Yellow Display (CYD). It’s a simple ESP32 board with a touch screen display attached to it and supports Wi-Fi and Bluetooth. It even comes with an acrylic casing and free shipping, with total cost only SGD 22.40. Perfect for my use case!

ESP32–2432S028R (Cheap Yellow Display) Technical Specifications

However, I immediately faced a critical challenge. Running a modern browser on this board is impossible due to the hardware limitations since its designed to be a cheap, light-weight device. With that, I had to re-think how I design my solution architecture.

There are commonly used libraries for UI on this board such as TFT_eSPI and LVGL and I realized that an easier way would be for me to design a simple UI on the device using these libraries to natively receive the logging events and then send them to a backend for recording and analysis later on.

Revised Architecture

A web server as per my original design would pretty much do this backend job but it also means that I needed to host the server somewhere in the LAN where it would be available 24/7. With that, after some research, I found out that I could actually use google sheets for this purpose. Basically, just create a google sheet and publish it as a web app, to which my CYD touch panel device would send the logs and these logs get recorded inside the google sheet, along with the timestamp (requires some custom scripting inside “Apps Script” feature of google sheets).

As for the mobile notification side, I found out that I can also script it via the Apps Script so that when there is a new line logged inside the google sheets, my telegram bot would send a notification to whichever chat that I want it to send to.

With that, my new architecture looks like this.

Now that this architecture seems viable with the hardware I have selected, I have started by connecting to the CYD ESP32 board via Arduino IDE. Being new to this, I struggled a bit to get the necessary libraries installed and get it to display something. There is something here I’d like to share more in details in a separate article when I write about how I vibe-coded this. In short, I started with ChatGPT but it went round and round since the start in getting me started with the baseline setup for the CYD ESP 32 board. It managed to allow me to use CYD ESP 32 as a web server to host a web application but this was not my intention since I wanted this display to be an input device logging baby feeding and bowel movements.

Eventually, I decided to switch to Gemini and viola! The first prompt gave me a working CYD ESP 32 screen with a Hello World. From there, I’ve iterated multiple times to get the kind of interface design I wanted.

  • Version 1 — simple UI with 4 buttons
  • Version 2 — Added + and — buttons to adjust the qty of milk and tried to change (unsuccessfully) Poop and Pee to icons. Also added a clock in the middle.
  • Version 3 — changed Breat Milk and Formula to large B and F and put it at the side so that there is more space for + and - since its meant to be touch buttons
  • Version 4 — made the number bigger so that easy to see from far since CYD display size is very small.

Version 1

Version 1

Version 2

Version 2

Version 3

Version 3

Version 4

Version 4

#2 Web Server (now using Google Sheets)

Now that the touch panel side is on the right track, I started to work on the backend google sheet. After creating it, I made it into a web app by calling “File > Share > Publish to Web”. From there, I get a URL and this URL is what I put inside the Arduino IDE and push to the CYD device so that it knows where to send the HTTP post request to. The sheet itself is a simple google sheet that looks like below:

Now for the sheet-updating script behind google sheet’s app script, I needed to have a way to handle the incoming POST request. When a touch button on CYD display is invoked, it will send a POST request to this google sheet web server with details on the timestamp, event type and value and the script will take this and set it to the respective cells inside the google sheet.

That was all I needed to do to get it up and running.

#3 Mobile App / Notification

For the third part of my system, I wanted notification on telegram when such a logging happens so I put the details into a msg, which is fed into a sendToTelegram function that invoke telegram bot api to send the message.

With that, I get notifications on telegram like this:

Sweet! This is what I was looking for.

I thought about how to make this even better. From my core requirements, I still have two things missing:

  • Notification when the baby is not fed for more than 3 hours
  • Daily summaries

Both can be achieved easily google sheets app script as well sending message to telegram using the same function so I’ve worked it out as below:

Notification if not fed more than 3 hours

Basically it checks from the Logs sheet when was the last time a feeding event happened (either breastmilk or formula) and if its already more than the alert threshold hours (that I can set via a variable), it will send an alert on telegram like below:

Daily Summaries

This is quite straightforward since we just need to check the timestamps and do a summary for the data from the day before.

This gives me a nice and concise summary like below in telegram.

One last thing required to make this work was to set time-based triggers, also inside the “Apps Script” app inside google sheets so that the feeding check will happen every 30 mins and the daily summary will happen everyday between 12am to 1am (timing can be set according to own preference)

Challenges and roadmap

With this, I have achieved what I have originally set out to do: a baby feeding logger that

  • allows easy logging of feeding, poop and pee via a simple, user friendly touch panel placed at cot-side
  • notifications on telegram on each event, daily summaries and alert if more than 3 hours without feeding
  • all achieved while keeping the cost below SGD 25 and no need to do anything out of my daily routine to maintain it (e.g. running a server 24/7 at home)

However, it is still definitely not perfect. Some challenges I faced on initial deployment are

  1. Power: the CYD ESP32 board I purchased did not come with a battery pack (On hindsight, I should have bought one that comes with it) so it requires constant power source so I have to either plug it into wall or connect it to a portable charger but it makes it a little more bulky and less portable.
  2. Phantom Logs: due to power fluctuations on the ESP32 board (since I connect it to a portable charger for power for now), the chip restarts every minute and sometimes that creates phantom logs inside my google sheet even though no one physically “clocked” it. This was resolved by requiring secret key to log an entry inside google sheets and only the function that is invoked when a touch button is pressed has this secret key so any other attempt from the device to log to the google sheet are killed.

There are many other ways that this can be improved since I have not even added analytics features or backend dashboard. I also tried to configure my telegram bot so that I can also log from telegram itself in addition to the hardware, like in the screenshot below, but I was facing quite a number of weird errors related to the data to and fro between google sheets and telegram in this aspect so I’ve shelved it for now.

In summary, this was quite an interesting weekend project for me while also having practical use case that solves one of my pain points. It also allowed me to try out basic vibe coding via minimal cost (I only have the $30+ monthly AI plan from Google for my google drive storage). I’m pretty sure the results would be much faster and more sleek with state-of-the-art tools like Codex or Claude Code but I am pretty happy with what was achieved for now.

Do feel free to message me if you have any other ideas or suggestions with regards to this project or in general. Would love to hear your thoughts too.


메타데이터
post_id
4a0d599712db
slug
i-built-a-smart-baby-feedingtracker-for-25-heres-how-4a0d599712db
url
https://medium.com/@nteezy/i-built-a-smart-baby-feedingtracker-for-25-heres-how-4a0d599712db
canonical_url
https://medium.com/@nteezy/i-built-a-smart-baby-feedingtracker-for-25-heres-how-4a0d599712db
author_url
https://medium.com/@nteezy
status
ok
fetched_at
2026-07-07 18:25:49