97 lines
3.3 KiB
Markdown
97 lines
3.3 KiB
Markdown
# 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
|
||
- [ ] Bottom nav shell (home, history, insights, settings)
|
||
- [ ] History / calendar heatmap screen
|
||
- [ ] Day detail screen — list entries for a selected day
|
||
- [ ] Insights screen — weekly/monthly AI summaries
|
||
- [ ] 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
|
||
- [ ] Seed database with default activities on first launch
|
||
|
||
### AI / insights
|
||
- [ ] Model download + progress UI
|
||
- [ ] Query mode — ask a free-form question about your data
|
||
- [ ] 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 (1–5), 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
|