Modern water‑intake tracker for Android with goals, reminders, history, and secure local sync.
- One‑tap water logging with a clean Material 3 UI.
- Smart reminders (office, workout, travel) and active‑hours scheduling.
- Goals, streaks, and weekly/monthly history charts.
- Offline‑first storage with optional HTTPS sync to a local server.
| Home | Reminders | Goals |
|---|---|---|
![]() |
![]() |
![]() |
| History | More | |
![]() |
![]() |
- Home: progress ring, quick log, next reminder.
- Reminders: interval, active hours, smart modes.
- Goals: daily goal, cup size, adaptive insights.
- History: charts, summaries, and streaks.
- Profile: theme selection and preferences.
- Kotlin + Jetpack Compose + Material 3
- Room + DataStore + WorkManager
- Retrofit + OkHttp + Moshi
- FastAPI (optional local server)
- Open in Android Studio and sync Gradle.
- Run on an emulator or device.
CLI build (debug APK):
gradle -p C:\Users\JHASHANK\Downloads\water_android :app:assembleDebug
Install APK (adb):
& "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe" install -r "C:\Users\JHASHANK\Downloads\water_android\app\build\outputs\apk\debug\app-debug.apk"
- Generate certs:
python server/generate_certs.py - Start server:
python -m uvicorn server.main:app --host 0.0.0.0 --port 8000 --ssl-keyfile server/certs/server.key --ssl-certfile server/certs/server.crt - Install
server/certs/ca.crton your device as a user CA. - Base URL:
- Emulator:
https://10.0.2.2:8000/ - Device:
https://<YOUR_PC_IP>:8000/
- Emulator:
Set BASE_URL and API_KEY in app/build.gradle.kts.
Create /data/data/com.example.waterreminder/files/server_config.json:
{
"baseUrl": "https://<YOUR_PC_IP>:8000/",
"apiKey": "dev-key-123"
}
Push via adb:
adb push server_config.json /data/data/com.example.waterreminder/files/server_config.json
GET /healthPOST /historyPOST /device
Server writes:
server/data/history.csvserver/data/devices.json~/Downloads/water_export_YYYYMMDD_HHmm.csv
- TLS error “Unable to parse TLS packet header”: server is running HTTP while app uses HTTPS.
- 401 Unauthorized: API key mismatch between app and server.
- Sync still failing: verify
/healthand inspectserver/data/history.csv.
MIT (update if different).
# Water_Remainder_Android # Water_Remainder_Android



