How jsackey101/hydration-reminder works
Hydration Reminder is a Tauri tray app for scheduling drink reminders. Users log or undo drinks from the tray, respond to reminder popups, and change the interval and timeout in Settings. The scheduler owns the reminder state and transitions; persistence stores that state in the app data folder. The sampled excerpts establish tray dispatch, popup behavior, and badge rendering, but omit much of the application’s command and state-update wiring, so those connections are marked unverified rather than asserted.
Main entry points: lib.rs App coordinator · tray.rs Tray menu · settings.rs Settings window · settings.ts Settings UI
Components 11
User interaction
- Tray menu
src-tauri/src/tray.rs - Settings window
src-tauri/src/settings.rs - Settings UI
src/settings.ts - Popup UI
src/popup.ts
Reminder runtime
- App coordinator
src-tauri/src/lib.rs - Reminder scheduler
src-tauri/src/scheduler.rs
State and persistence
- State persistence
src-tauri/src/persist.rs - state.json
Windows and tray
- Reminder popup
src-tauri/src/popup.rs - Count badge
src-tauri/src/badge.rs
Other components
- User
Connections 13
- User → Tray menu: selects action
src-tauri/src/tray.rs - Tray menu → App coordinator: dispatches log/undo
src-tauri/src/tray.rs - Tray menu → Settings window: opens settings
src-tauri/src/tray.rs - User → Popup UI: answers prompt
- Settings window → Settings UI: shows window
src-tauri/src/settings.rs - Settings UI → App coordinator: updates settings
- Popup UI → App coordinator: submits answer
- App coordinator → Reminder scheduler: advances state
src-tauri/src/lib.rs - App coordinator → State persistence: loads state
src-tauri/src/lib.rs - State persistence → state.json: reads/writes
src-tauri/src/persist.rs - App coordinator → Reminder popup: shows/hides
src-tauri/src/lib.rs - App coordinator → Tray menu: refreshes view
src-tauri/src/lib.rs - Tray menu → Count badge: renders badge
src-tauri/src/tray.rs