Water Reminder App
A native Flutter hydration tracker published on Google Play Store featuring personalized intake goals, smart push notifications, and local analytics.
Offline capable
Fluid UI performance
Store rating
Problem & Context
Co-developed with Sahil Vaghasiya and published to the Google Play Store, the Water Reminder App is a native cross-platform mobile application designed to help users build sustainable hydration habits. It pairs clean, friendly micro-interactions with an intelligent intake calculation algorithm tailored to user weight, activity level, and climate.
Ensuring reliable background push reminders across aggressive Android battery optimization modes, maintaining instantaneous offline data persistence without cloud dependencies, and delivering 60 FPS charts on entry-level Android devices.
Engineering Strategy
Engineered a reactive mobile architecture in Flutter and Dart using Riverpod for predictable state management. Implemented an offline-first SQLite database (sqflite) for logging hydration events, scheduled local notifications with exact alarms via flutter_local_notifications, and visualized multi-range historical data using FL Chart.
Built in Flutter 3 using Dart. Utilizes Riverpod for dependency injection and state handling. Local persistence is powered by SQLite (sqflite) with custom migrations and SharedPreferences for user settings. Background notifications are orchestrated via flutter_local_notifications with timezone awareness.
Architectural & Technical Choices
Implemented an offline-first architecture with SQLite so all logging, streak tracking, and chart generation work 100% without internet.
Configured Flutter Local Notifications with exact scheduling to wake the app reliably across OEM battery-saver restrictions.
Designed custom circular progress gauges (percent_indicator) with fluid water-fill animations and cheerful milestone feedback.
Co-architected clean separation between presentation, domain, and data layers to enable rapid Play Store iterative releases.
Engineering Challenges Overcome
⚠️ Challenge: Android background process termination dropping scheduled water reminder alarms.
✓ Solution: Implemented exact alarm scheduling with flutter_timezone synchronization and boot-completed broadcast receivers to restore reminders upon device restart.
⚠️ Challenge: Visualizing dense hydration history and time-of-day breakdowns without UI frame drops.
✓ Solution: Optimized FL Chart datasets with pre-aggregated SQL queries and indexed timestamps, ensuring smooth 60 FPS transitions.
