Developing a Mobile Hydration Tracker
I'd noticed people consistently complain about not consuming enough drinking water during the day. The topic was a frequent favourite at work, particularly because we bounced from meeting to meeting with few breaks in between. Coffee and tea were excessive replacements.
Folks would bring in their personal bottles, a few with volume markers. They had every good intention of hitting their target. But even the best laid plans tanked. The trouble with those bottles was that most people spent most of their time away from their desk.
None of this had much to do with why I built a hydration tracker. I simply wanted a weekend project and an opportunity to prove that the PRD still mattered - a subject of much debate and anxiety on LinkedIn.
Now, I've built prototypes without a scaffold before, and I know how frustrating those experiences can be. It's for good reason that the latest build processes like Spec-kit and AI-DLC depend on good specifications.
| Feature | What it does |
|---|---|
| Recommended Intake | A goal based on your body and your day. The app combines them into a daily target using a bio-data formula and shows the result as a range instead of a single number. |
| Customize Intake | Define a personalised target |
| Activity levels / ambient temperature | Includes planned exercise and weather conditions in your location. |
| Multi-inputs | Logging can be done with quick-add buttons, by typing an exact amount, or by swiping to estimate. |
| Reminders | Reminders that match your routine. Set reminder times, or set an interval. The app schedules them on your device, so no account or server is involved. It asks for notification permission only when you turn reminders on. |
| Daily tracker | Progress you can see. A progress ring and water animation show how close you are to today's goal. |
| Dashboards | Trends. A dashboard that displays current performance against target, current week stats with your average over the previous four weeks, and a calendar view for daily goal achievements. |
The project (HYL01) was simple enough to scope (or so I thought). It's meant to calculate a sensible daily target from personal bio-data, track water intake during the day, and remind me when I'm behind. Nothing that hasn't been done before. So I wrote a PRD like I would any other.
It's built in React Native. I underestimated the complexity of a hydration calculator. Biomarkers, activity, climate, medical history, health circumstances, and other variable factors all pull on the number in different directions. Additionally, the research behind how they interact with each other is not something I have any real grounding in.
I settled on a formula that's reasonable. I can't call it validated. But it covered planned activity for the day and local weather conditions. Integration with personal tracking devices was left out of scope.
Tech stack
| Layer | Technology |
|---|---|
| Framework | Expo 57 and React Native 0.86 (React 19, TypeScript) |
| Navigation | React Navigation |
| Graphics | react-native-svg |
| State | zustand |
| Local data | SQLite (expo-sqlite) |
| Sign-in | Google OAuth (expo-auth-session) with expo-secure-store |
| Reminders* | expo-notifications |
| Location | Google Places |
| Backend | None |
What the App Does
HYL01 works out a target that fits you. It also provides multiple ways to record consumption, and makes it fun while doing so.
I could build the app. The interface, the state management, the reminders, the mechanics, all of it came together in a weekend. What I couldn't build my way past was domain knowledge. That still needs someone who understands the dynamics better.
The most important thing to come out of this project was confirming that a well-prepared PRD with articulated stories and acceptance criteria drove down development time significantly over my previous "decide while doing" projects.
The PRD is an absolute necessity even if it's just a prototype or proof of concept you're going after. You need some sort of a compass. Skipping it, particularly in complex builds, opens the doors to misalignment and rework.
So, I'll stay clear from the predictions of gurus and pundits claiming the PRD is optional. Or that a prototype is the new PRD. I guess, if you don't know where you are going, any road will take you there. And while I do appreciate an adventure, time is important to me.