A beautiful, interactive, single-file hydration tracker that reminds you to drink water every hour. Built as a Progressive Web App (PWA) that runs in any modern browser and installs to your Android/iOS home screen like a native app.
Link - https://aurashift.github.io/AquaFlow/
Stay hydrated, one hour at a time.
| Home Screen | Logged Progress | Notifications |
|---|---|---|
![]() |
![]() |
![]() |
- Hourly logging grid โ 16 hour cells from 7 AM to 10 PM, each representing one 250 ml glass
- One-tap "Drink Now" button logs the current hour instantly
- Manual cell tapping โ log any hour retroactively or unlog mistakes
- Undo button โ reverses the last 20 actions
- Auto-reset at midnight โ fresh tracking starts each day
- Persistent storage โ your progress survives browser refreshes via
localStorage
- Animated progress ring with gradient stroke that fills as you complete hours
- Glassmorphic UI with backdrop blur, gradient cards, and depth shadows
- Floating background bubbles drifting up continuously for a water-themed vibe
- Current-hour pulse โ the active hour has a glowing gold ring so it's always obvious
- State-based cell colors:
- ๐ต Blue gradient = logged glass
- ๐ก Gold ring = current hour (waiting on you)
- ๐ด Rose = missed past hour
- โช Faded = future hour
- Splash animation when you log a glass
- Bouncing counter that pops on every update
- Browser notifications at the top of every hour (opt-in, requires HTTPS)
- Persistent on-screen banner when the current hour is unlogged
- Live countdown showing minutes until the next hour
- Audio chime via Web Audio API when you log a glass (toggleable)
- Haptic vibration on Android via
navigator.vibrate
- Day streak counter โ increments when you log 70%+ of hours
- Daily ml total โ calculated at 250 ml per glass (4 L goal)
- Completion percentage โ live updating
- Confetti celebration when you hit your full daily goal
- Hourly notifications toggle (browser permission required)
- Sound on log toggle
- Dismissable install hint for first-time users
You sit at a screen for 8+ hours and forget to drink. Pin AquaFlow as a browser tab; the on-screen banner and chime nudge you every hour without being annoying.
Pair with a workout schedule to ensure consistent water intake throughout the day. The ml counter helps you hit specific hydration targets (e.g., 3-4 L for active days).
The streak counter and confetti reward create a small dopamine loop. Useful for anyone consciously trying to build hydration as a daily habit.
If a doctor has prescribed increased water intake (kidney stones, UTI prevention, low blood pressure), the structured hourly schedule prevents under-drinking.
For people in regions like Kerala or Andhra Pradesh during summer, hourly tracking guards against heat-related dehydration.
Increased hydration needs are easier to meet with a visual hourly grid.
Use the tracker as a behavior-substitution tool โ every "logged glass" is a cup of water instead of a soda/coffee.
- Download
aquaflow.html - Open it in any modern browser (Chrome, Firefox, Safari, Edge)
- Start tapping! Progress saves automatically.
โ ๏ธ Note: Opening as a localfile://page means browser notifications won't work. For full features, host it on HTTPS.
# In a new repo
git init
git add aquaflow.html
git commit -m "Add AquaFlow"
git push origin main
# Enable Pages: Settings โ Pages โ Source: main branchYour tracker is live at https://<username>.github.io/<repo>/aquaflow.html
- Visit app.netlify.com/drop
- Drag
aquaflow.htmlinto the page - Get a public HTTPS URL in seconds
npx vercel deploy aquaflow.html- Open the HTTPS URL in Chrome on Android
- Tap the โฎ menu โ Add to Home screen
- Confirm the name โ installs with its own icon and splash
- Launches fullscreen, like a native app
- Open the HTTPS URL in Safari (Chrome on iOS won't work for this)
- Tap the Share button โ Add to Home Screen
- Confirm
- Open the URL in Chrome/Edge
- Click the install icon in the address bar (โ or computer-with-arrow)
- Confirm install
Browser notifications require HTTPS (or localhost for testing). They will not work from a local file:// path.
Android Chrome:
- Tap the lock/info icon in the address bar โ Permissions โ Notifications โ Allow
- Or: Chrome โฎ โ Settings โ Site settings โ Notifications โ unblock the site
Desktop Chrome/Edge:
- Click the lock icon โ Site settings โ Notifications โ Allow โ reload
Mobile browsers aggressively suspend background tabs to save battery. Hourly setInterval reminders may not fire reliably when the tab is backgrounded. For guaranteed hourly nudges, pair AquaFlow with:
- Android Clock app โ set a repeating hourly alarm
- Google Keep โ recurring time-based reminder
- Tasker / MacroDroid โ automated hourly notification
Use AquaFlow as the logging and visualization layer; let the OS handle the waking you up part.
All settings are at the top of the <script> block in aquaflow.html:
const WAKE_START = 7; // First tracked hour (7 AM)
const WAKE_END = 22; // Last tracked hour (10 PM)
const ML_PER_GLASS = 250; // ml per logged glassAdjust to your routine. For example, a night-shift worker might use WAKE_START = 15, WAKE_END = 6 (requires logic tweaks for wrap-around).
CSS variables at the top of the <style> block:
--accent: #38bdf8; /* Primary blue */
--accent-2: #0ea5e9; /* Deeper blue */
--gold: #fbbf24; /* Current-hour highlight */
--rose: #fb7185; /* Missed-hour color */- Single HTML file โ no build step, no dependencies, no framework
- ~700 lines of HTML + CSS + vanilla JavaScript
- Storage:
localStorage(~1 KB used per day) - Audio: Web Audio API (oscillator-generated chime, no audio files)
- Vibration:
navigator.vibrate(Android only; iOS Safari blocks this) - Notifications: Notifications API (requires HTTPS + user permission)
- PWA manifest: embedded as base64 data URI, no separate file needed
- Offline-capable: runs entirely client-side once loaded
| Feature | Chrome Android | Safari iOS | Chrome Desktop | Firefox |
|---|---|---|---|---|
| Logging & UI | โ | โ | โ | โ |
| localStorage | โ | โ | โ | โ |
| Notifications | โ (HTTPS) | โ | โ | |
| Vibration | โ | โ | โ | โ Android |
| Audio chime | โ | โ (after tap) | โ | โ |
| Add to Home Screen | โ | โ | โ | Partial |
aquaflow/
โโโ aquaflow.html # Main app (single file)
โโโ README.md # This file
โโโ screenshots/ # Add your screenshots here
โโโ home.png
โโโ progress.png
โโโ notification.png
Potential enhancements if you want to extend it:
- Custom waking hours via UI (not just code)
- Weekly / monthly stats and charts
- Multiple drink types (water, tea, coffee with different hydration weights)
- Export data as CSV
- Dark / light theme toggle
- Multi-language support
- Wear OS companion
- Capacitor/Cordova wrapper for a true native APK
- Sync across devices via Firebase / Supabase
- Integration with Google Fit / Samsung Health
- Background notifications are unreliable on mobile browsers due to battery optimization.
- No cloud sync โ data is per-device, per-browser.
- No timezone migration โ if you travel across zones, the schedule shifts with the device clock.
- Streak logic is simple โ based on >70% completion of the previous day; missed days reset to 0.
- iOS audio requires an initial user gesture before chimes will play (browser policy).
Free to use, modify, and distribute. No attribution required, though appreciated.
Built as a personal habit-tracking experiment. Designed for mobile-first use with progressive enhancement on desktop.
Made with ๐ง โ drink water, friend.


