Estudos de Caso Empíricos e Registros de Decisão (ADRs) July 24, 2026
Water Drink: a detailed look at how the hydration tracking app works Details on onboarding, home screen, exercise-based goal boosts, favorites, achievements, notifications, settings, tracking, and the Android widget of the Water Drink (Hidratação Diária) app.
Expo React Native android notifications widget
by Marcelo Macedo · Level: Beginner · Reading time: 4 min
In the previous post I introduced Water Drink , the Hidratação Diária project, a mobile app built with React Native + Expo to track water intake throughout the day. In this article I go into detail on each feature, based on the project's README .
Full source code at: https://github.com/marcelo3macedo/water-drink
Personalized onboarding
The user's first contact with the app is a short questionnaire:
Quick questions about sex, age range, and weight (weight is optional);
Automatic calculation of a recommended daily water goal, with the option to adjust it manually;
Selection of favorite containers (cups, bottles, squeeze bottles) for everyday use;
Option to skip the questionnaire and set the goal manually.
Home screen
Circular indicator with the percentage and volume already consumed for the day;
Daily goal shown front and center;
Quick-action buttons to log preset volumes with a single tap;
+ Custom button to enter any amount manually;
I exercised button to boost the goal for the current day only, replenishing fluids lost during the workout.
Exercise-based goal boost
After a workout, the user can replenish lost fluids without changing the goal on other days:
Quick recommended values for running (light, moderate, intense) and gym workouts (light, moderate, intense);
Field to enter a custom replenishment amount;
The adjustment applies only to the current day — the goal returns to normal the next day;
Indicator on the home screen showing how much the goal was boosted.
Favorites
Full list of containers (cups, bottles, squeeze bottles, jugs) to mark as favorites;
Favorites show up as shortcuts on the home screen and in the widget;
Creation of custom measurements with their own icon and volume.
waterdrink-recipientes-favoritos
Achievements
Trophy system that gamifies app usage (logging, goals reached, weekly streaks, among others);
Dedicated screen showing progress on unlocked achievements;
Optional birthday field to unlock the special "Toast to Life" achievement.
Notifications
Notification center with hydration reminders and unlocked achievements;
Alert at noon if the user is below 50% of the goal;
Alert in the afternoon (6pm) if the goal still hasn't been reached;
Button to test the notification immediately;
Sharing unlocked achievements as an image.
Settings
Setting the daily water goal (quick options: 1500, 2000, 2500, or 3000 ml);
Manually entering a custom goal;
Managing the quick-action buttons — ideal for people using a fixed-volume cup or bottle.
Tracking
Daily history with every log entry and the exact time it was recorded;
Visual indication of how much is left to reach the goal;
Option to remove individual entries or reset the day;
Entries automatically reset every new day.
waterdrink-acompanhamento
Home-screen widget showing the day's progress and quick access to favorite containers;
Adding water directly from the widget, without opening the app.
Technologies
How to run it
bash
npm install
npx expo start
Testing notifications and the widget requires a Development Build instead of Expo Go:
bash
npx expo run:android
npx expo run:ios
Full source code available at github.com/marcelo3macedo/water-drink .