Files
dailyou/README.md
T
stefwill 78aa032c1b feat: implement settings screen with reminders, biometrics, theme, and PDF export
- Daily reminder scheduling via flutter_local_notifications (inexact, repeating at chosen time)
- Biometric lock gate on app launch with auto-prompt and manual unlock button
- Theme mode selector (System/Light/Dark) persisted to settings DB
- PDF export of full mood history shared via share_plus
- Android: POST_NOTIFICATIONS, USE_BIOMETRIC permissions; switched to FlutterFragmentActivity
2026-04-26 15:49:52 +10:00

97 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DailyYou
A private, on-device mood journal for Android and iOS built with Flutter. All data stays on your device — no cloud, no accounts.
## Features
- **Multi-step mood logging** — guided wizard capturing mood, sleep, energy, positivity, and self-worth in one flow
- **Activity tagging** — log what you've been doing; custom activities supported
- **On-device AI insights** — weekly and monthly reflections powered by MediaPipe on-device LLM (no data leaves the device)
- **Calendar heatmap** — daily mood averages visualised across a month
- **Reminders** — optional local notifications to prompt daily check-ins
- **Biometric lock** — optional fingerprint/Face ID protection
- **Dark mode** — follows system theme
## Tech stack
| Layer | Library |
|---|---|
| UI | Flutter 3.x, Material 3 |
| State management | flutter_riverpod 3.x (non-codegen) |
| Database | Drift 2.x (SQLite) |
| Charts | fl_chart |
| On-device LLM | flutter_mediapipe_chat |
| Notifications | flutter_local_notifications |
| Biometrics | local_auth |
| Export | pdf + share_plus |
## Getting started
```bash
flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter run
```
> Android requires core library desugaring — already configured in `android/app/build.gradle.kts`.
## Project structure
```
lib/
app.dart # Root widget, theme, routing
main.dart # Entry point
core/
database/ # Drift schema, DAOs, generated code
llm/ # LlmService abstraction + MediaPipe impl
providers/ # Riverpod providers (mood, activity, settings, LLM, insights)
features/
log_mood/ # Mood logging wizard screen + widgets
shared/
widgets/ # Reusable UI components
```
## To-do
### Core screens
- [x] Bottom nav shell (home, history, insights, settings)
- [x] History / calendar heatmap screen
- [x] Day detail screen — list entries for a selected day
- [x] Insights screen — weekly/monthly AI summaries
- [x] Settings screen — reminders, biometrics, theme, data export
- [ ] Onboarding flow — first-launch walkthrough
### Mood logging
- [ ] Edit existing entry (tap from day detail)
- [ ] Free-text note step in the wizard
- [ ] Tag selection step
### Activities
- [ ] Activity management screen — add, reorder, delete custom activities
- [x] Seed database with default activities on first launch
### AI / insights
- [x] Model setup screen — manual transfer instructions + scan button
- [ ] Query mode — ask a free-form question about your data
- [x] Prompt builder — serialize mood history into LLM context
### Analytics
- [ ] Charts screen — mood trend line, activity frequency bar chart, sleep vs mood scatter
### Infrastructure
- [ ] Local notifications — schedule and cancel reminders
- [ ] Biometric lock — gate app on fingerprint/Face ID
- [ ] PDF export and share sheet
- [ ] App icon and splash screen
---
## Database schema
- `MoodEntries` — mood (15), sleep minutes, energy, positivity, self-worth, optional note
- `Activities` — built-in and custom activities with icon and colour
- `EntryActivities` — many-to-many join between entries and activities
- `Tags` — free-form tags
- `LlmInsights` — cached AI-generated insight text keyed by prompt SHA-256
- `UserSettings` — key/value store for app preferences