chore: complete v1.1 milestone
Archive v1.1 Calendar & Polish milestone artifacts (roadmap, requirements, phase directories) to milestones/. Evolve PROJECT.md with validated requirements and new key decisions. Update RETROSPECTIVE.md with v1.1 section and cross-milestone trends. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,24 +2,12 @@
|
||||
|
||||
## What This Is
|
||||
|
||||
A local-first Flutter app for organizing household chores, built for personal/couple use on Android. Uses a room-based task scheduling model where users create rooms, add recurring tasks with frequency intervals, and the app auto-calculates the next due date after each completion. Features a daily plan home screen, bundled German-language task templates, room cleanliness indicators, and daily summary notifications. Fully offline, free, privacy-respecting — all data stays on-device.
|
||||
A local-first Flutter app for organizing household chores, built for personal/couple use on Android. Uses a room-based task scheduling model where users create rooms, add recurring tasks with frequency intervals, and the app auto-calculates the next due date after each completion. Features a horizontal calendar strip home screen with day-by-day task navigation, task completion history, configurable sorting (alphabetical, interval, effort), bundled German-language task templates, room cleanliness indicators, and daily summary notifications. Fully offline, free, privacy-respecting — all data stays on-device.
|
||||
|
||||
## Core Value
|
||||
|
||||
Users can see what needs doing today, mark it done, and trust the app to schedule the next occurrence — without thinking about it.
|
||||
|
||||
## Current Milestone: v1.1 Calendar & Polish
|
||||
|
||||
**Goal:** Replace the stacked daily plan with a horizontal calendar strip UI, add task completion history, and task sorting options.
|
||||
|
||||
**Target features:**
|
||||
- Horizontal date-strip calendar with day abbreviation + date number cards
|
||||
- Month color shift for visual boundary between months
|
||||
- Day-selection shows tasks in a list below the strip
|
||||
- Undone tasks carry over to the next day with color accent (overdue marker)
|
||||
- Task completion history log
|
||||
- Additional task sorting (alphabetical, interval, effort)
|
||||
|
||||
## Requirements
|
||||
|
||||
### Validated
|
||||
@@ -32,16 +20,16 @@ Users can see what needs doing today, mark it done, and trust the app to schedul
|
||||
- Daily summary notification with configurable time — v1.0
|
||||
- Light/dark theme with calm Material 3 palette — v1.0
|
||||
- Cleanliness indicator per room (based on overdue vs on-time) — v1.0
|
||||
- Horizontal calendar strip home screen replacing stacked daily plan — v1.1
|
||||
- Overdue task carry-over with red/orange visual accent — v1.1
|
||||
- Task completion history with per-task reverse-chronological log — v1.1
|
||||
- Alphabetical, interval, and effort task sorting with persistence — v1.1
|
||||
|
||||
### Active
|
||||
|
||||
- [ ] Horizontal calendar strip home screen (replacing stacked daily plan)
|
||||
- [ ] Overdue task carry-over with visual accent
|
||||
- [ ] Task completion history log
|
||||
- [ ] Additional task sorting (alphabetical, interval, effort)
|
||||
- [ ] Data export/import (JSON) — deferred
|
||||
- [ ] English localization — deferred
|
||||
- [ ] Room cover photos from camera or gallery — deferred
|
||||
- [ ] Data export/import (JSON)
|
||||
- [ ] English localization
|
||||
- [ ] Room cover photos from camera or gallery
|
||||
|
||||
### Out of Scope
|
||||
|
||||
@@ -55,18 +43,22 @@ Users can see what needs doing today, mark it done, and trust the app to schedul
|
||||
- Firebase or any Google cloud services — contradicts local-first design
|
||||
- Real-time cross-device sync — potential future self-hosted feature
|
||||
- Tablet-optimized layout — future enhancement
|
||||
- Weekly/monthly calendar views — date strip is sufficient for task app
|
||||
- Drag tasks between days — tasks auto-schedule based on frequency
|
||||
- Calendar sync (Google/Apple) — contradicts local-first, offline-only design
|
||||
- Statistics & insights dashboard — v2.0
|
||||
- Onboarding wizard — v2.0
|
||||
- Custom accent color picker — v2.0
|
||||
|
||||
## Context
|
||||
|
||||
- Shipped v1.0 MVP with 10,588 LOC Dart (7,773 lib + 2,815 test), 89 tests
|
||||
- Tech stack: Flutter + Dart, Riverpod 3 + code generation, Drift 2.31 SQLite, GoRouter, flutter_local_notifications
|
||||
- Shipped v1.1 with 13,031 LOC Dart (9,051 lib + 3,980 test), 108 tests
|
||||
- Tech stack: Flutter + Dart, Riverpod 3 + code generation, Drift 2.31 SQLite, GoRouter, flutter_local_notifications, SharedPreferences
|
||||
- Inspired by BeTidy (iOS/Android household cleaning app) — room-based model, no cloud/social
|
||||
- Built for personal use with partner on a shared Android device; may publish publicly later
|
||||
- Code and comments in English; UI strings German-only for v1.0
|
||||
- Code and comments in English; UI strings German-only through v1.1
|
||||
- Gitea (self-hosted on Hetzner) for version control; no CI/CD pipeline yet
|
||||
- Dead code from v1.0: daily_plan_providers.dart, daily_plan_task_row.dart, progress_card.dart (DailyPlanDao still used by notification service)
|
||||
|
||||
## Constraints
|
||||
|
||||
@@ -74,7 +66,7 @@ Users can see what needs doing today, mark it done, and trust the app to schedul
|
||||
- **Platform**: Android-first (iOS later)
|
||||
- **Offline**: 100% offline-capable, zero network dependencies
|
||||
- **Privacy**: No data leaves the device, no analytics, no tracking
|
||||
- **Language**: German-only UI for v1.0, English code/comments
|
||||
- **Language**: German-only UI through v1.1, English code/comments
|
||||
- **No CI**: No automated build pipeline initially
|
||||
|
||||
## Key Decisions
|
||||
@@ -91,6 +83,11 @@ Users can see what needs doing today, mark it done, and trust the app to schedul
|
||||
| Calendar-anchored scheduling | Monthly/quarterly/yearly tasks anchor to original day-of-month with clamping | Good — handles Feb 28/31 edge cases correctly with anchor memory |
|
||||
| flutter_local_notifications v21 | Standard Flutter notification package, TZ-aware scheduling | Good — inexactAllowWhileIdle avoids SCHEDULE_EXACT_ALARM complexity |
|
||||
| Manual StreamProvider for drift types | riverpod_generator throws InvalidTypeException with drift Task type | Revisit — may be fixed in future riverpod_generator versions |
|
||||
| Calendar strip replaces daily plan | v1.1 goal — stacked overdue/today/upcoming sections replaced by horizontal 181-day strip | Good — cleaner navigation, day-by-day browsing |
|
||||
| NotifierProvider over StateProvider | Riverpod 3.x removed StateProvider | Good — minimal Notifier subclass works cleanly |
|
||||
| In-memory sort over SQL ORDER BY | Sort preference changes without re-querying DB | Good — stream.map applies sort after DB emit, reactive to preference changes |
|
||||
| SharedPreferences for sort | Simple enum.name string persistence for sort preference | Good — lightweight, no DB migration needed, survives app restart |
|
||||
| PopupMenuButton for sort UI | Material 3 AppBar action pattern, overlay menu | Good — clean integration in both HomeScreen and TaskListScreen AppBars |
|
||||
|
||||
---
|
||||
*Last updated: 2026-03-16 after v1.1 milestone started*
|
||||
*Last updated: 2026-03-16 after v1.1 milestone completed*
|
||||
|
||||
Reference in New Issue
Block a user