Skip to content

Offline-first hydration tracker built with Expo + SQLite. No accounts. No telemetry.

License

Notifications You must be signed in to change notification settings

Cherie05/blunote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

BluNote (offline-first hydration tracker)

BluNote is a 100% offline-first hydration tracker built with Expo + React Native. All data stays on your device (SQLite). No accounts. No telemetry. No network requests.

Offline-first

  • 100% device-local: SQLite for data, SecureStore/AsyncStorage for install ID
  • No accounts, no analytics, no tracking, no network calls
  • Notifications are local-only via expo-notifications

Run locally

From the project root:

npm install
npx expo start

Useful scripts:

npm run lint
npm test
npm run typecheck   # or: npx tsc --noEmit

Backup & Restore

  • Settings → Backup & Restore lets you export a JSON backup and share it (AirDrop, Files, etc.).
  • Imports validate schema and restore data transactionally; notifications are re-scheduled after restore.
  • Last backup time is shown in Settings.
  • Install ID (device-local identity) is visible in Settings → About with a copy button.

Data safety & reliability

  • SQLite WAL enabled; indexes on intake logs and daily totals.
  • Daily totals cached in a daily_totals table for fast charts.
  • Validation of water amounts, weight/goal, and wake/sleep windows.
  • Notification schedules reconciled on startup/foreground with permission checks.

Project structure (high level)

  • app/ — screens (home, onboarding, settings, details, achievements, tips)
  • database/ — schema, services, migrations
  • utils/notifications.ts — local scheduling
  • src/device/installId.ts — device-local ID
  • src/notifications/reconcile.ts — schedule reconciliation
  • src/backup/backup.ts — export/import helpers
  • tests/ — Jest unit tests

Environment

  • .env.example is provided.
  • The app is offline-only and does not require API keys by default.

Contributing

See CONTRIBUTING.md.

Security

See SECURITY.md.

License

MIT (see LICENSE).