docs: create roadmap (4 phases)
This commit is contained in:
@@ -119,13 +119,42 @@ Which phases cover which requirements. Updated during roadmap creation.
|
|||||||
|
|
||||||
| Requirement | Phase | Status |
|
| Requirement | Phase | Status |
|
||||||
|-------------|-------|--------|
|
|-------------|-------|--------|
|
||||||
| *(populated during roadmap creation)* | | |
|
| FOUND-01 | Phase 1: Foundation | Pending |
|
||||||
|
| FOUND-02 | Phase 1: Foundation | Pending |
|
||||||
|
| FOUND-03 | Phase 1: Foundation | Pending |
|
||||||
|
| FOUND-04 | Phase 1: Foundation | Pending |
|
||||||
|
| THEME-01 | Phase 1: Foundation | Pending |
|
||||||
|
| THEME-02 | Phase 1: Foundation | Pending |
|
||||||
|
| ROOM-01 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| ROOM-02 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| ROOM-03 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| ROOM-04 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| ROOM-05 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TASK-01 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TASK-02 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TASK-03 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TASK-04 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TASK-05 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TASK-06 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TASK-07 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TASK-08 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TMPL-01 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| TMPL-02 | Phase 2: Rooms and Tasks | Pending |
|
||||||
|
| PLAN-01 | Phase 3: Daily Plan and Cleanliness | Pending |
|
||||||
|
| PLAN-02 | Phase 3: Daily Plan and Cleanliness | Pending |
|
||||||
|
| PLAN-03 | Phase 3: Daily Plan and Cleanliness | Pending |
|
||||||
|
| PLAN-04 | Phase 3: Daily Plan and Cleanliness | Pending |
|
||||||
|
| PLAN-05 | Phase 3: Daily Plan and Cleanliness | Pending |
|
||||||
|
| PLAN-06 | Phase 3: Daily Plan and Cleanliness | Pending |
|
||||||
|
| CLEAN-01 | Phase 3: Daily Plan and Cleanliness | Pending |
|
||||||
|
| NOTF-01 | Phase 4: Notifications | Pending |
|
||||||
|
| NOTF-02 | Phase 4: Notifications | Pending |
|
||||||
|
|
||||||
**Coverage:**
|
**Coverage:**
|
||||||
- v1 requirements: 22 total
|
- v1 requirements: 30 total
|
||||||
- Mapped to phases: 0
|
- Mapped to phases: 30
|
||||||
- Unmapped: 22
|
- Unmapped: 0
|
||||||
|
|
||||||
---
|
---
|
||||||
*Requirements defined: 2026-03-15*
|
*Requirements defined: 2026-03-15*
|
||||||
*Last updated: 2026-03-15 after initial definition*
|
*Last updated: 2026-03-15 after roadmap creation*
|
||||||
|
|||||||
83
.planning/ROADMAP.md
Normal file
83
.planning/ROADMAP.md
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# Roadmap: HouseHoldKeaper
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Four phases build the app bottom-up along its natural dependency chain. Phase 1 lays the technical foundation every subsequent phase relies on. Phase 2 delivers complete room and task management — the core scheduling loop. Phase 3 surfaces that data as the daily plan view (the primary user experience) and adds the cleanliness indicator. Phase 4 adds notifications and completes the v1 feature set. After Phase 3, the app is usable daily. After Phase 4, it is releasable.
|
||||||
|
|
||||||
|
## Phases
|
||||||
|
|
||||||
|
**Phase Numbering:**
|
||||||
|
- Integer phases (1, 2, 3): Planned milestone work
|
||||||
|
- Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED)
|
||||||
|
|
||||||
|
Decimal phases appear between their surrounding integers in numeric order.
|
||||||
|
|
||||||
|
- [ ] **Phase 1: Foundation** - Project scaffold, database, state management, theme, and localization infrastructure
|
||||||
|
- [ ] **Phase 2: Rooms and Tasks** - Complete room CRUD, task CRUD with auto-scheduling, and bundled templates
|
||||||
|
- [ ] **Phase 3: Daily Plan and Cleanliness** - Primary daily plan screen with overdue/today/upcoming, cleanliness indicators per room
|
||||||
|
- [ ] **Phase 4: Notifications** - Daily summary notification with configurable time and Android permission handling
|
||||||
|
|
||||||
|
## Phase Details
|
||||||
|
|
||||||
|
### Phase 1: Foundation
|
||||||
|
**Goal**: The app compiles, opens, and enforces correct architecture patterns — ready to receive features without accumulating technical debt
|
||||||
|
**Depends on**: Nothing (first phase)
|
||||||
|
**Requirements**: FOUND-01, FOUND-02, FOUND-03, FOUND-04, THEME-01, THEME-02
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. App launches on Android without errors and shows a bottom navigation bar with Home, Rooms, and Settings tabs
|
||||||
|
2. Light and dark themes work correctly and follow the system setting by default, using the calm Material 3 palette (muted greens, warm grays, gentle blues)
|
||||||
|
3. All UI strings are loaded from ARB localization files — no hardcoded German text in Dart code
|
||||||
|
4. The Drift database opens on first launch with schemaVersion 1 and the migration workflow is established (drift_dev make-migrations runs without errors)
|
||||||
|
5. riverpod_lint is active and flags ref.watch usage outside build() as an analysis error
|
||||||
|
**Plans**: TBD
|
||||||
|
|
||||||
|
### Phase 2: Rooms and Tasks
|
||||||
|
**Goal**: Users can create and manage rooms and tasks, mark tasks done, and trust the app to schedule the next occurrence automatically
|
||||||
|
**Depends on**: Phase 1
|
||||||
|
**Requirements**: ROOM-01, ROOM-02, ROOM-03, ROOM-04, ROOM-05, TASK-01, TASK-02, TASK-03, TASK-04, TASK-05, TASK-06, TASK-07, TASK-08, TMPL-01, TMPL-02
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. User can create a room with a name and icon, edit it, reorder rooms via drag-and-drop, and delete it (with confirmation that removes all associated tasks)
|
||||||
|
2. User can create a task in a room with name, description, frequency interval (daily through yearly and custom), and effort level; tasks can be edited and deleted with confirmation
|
||||||
|
3. When creating a room, user can select from bundled German-language task templates for the chosen room type (all 14 room types covered) and they are added to the room as tasks
|
||||||
|
4. User can mark a task done (tap or swipe), which records the completion and sets the next due date correctly based on the interval
|
||||||
|
5. Overdue tasks are visually highlighted with a distinct color or badge on room cards and in task lists; tasks within a room are sorted by due date by default
|
||||||
|
6. Each room card shows its name, icon, count of due tasks, and cleanliness indicator
|
||||||
|
**Plans**: TBD
|
||||||
|
|
||||||
|
### Phase 3: Daily Plan and Cleanliness
|
||||||
|
**Goal**: Users can open the app and immediately see what needs doing today, act on tasks directly from the plan view, and see a room-level health indicator
|
||||||
|
**Depends on**: Phase 2
|
||||||
|
**Requirements**: PLAN-01, PLAN-02, PLAN-03, PLAN-04, PLAN-05, PLAN-06, CLEAN-01
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. The Home tab shows today's tasks grouped by room, with a separate highlighted section at the top for overdue tasks
|
||||||
|
2. User can mark a task done directly from the daily plan view via swipe or checkbox without navigating to the room
|
||||||
|
3. User can see upcoming tasks (tomorrow and this week) from the daily plan screen
|
||||||
|
4. A progress indicator shows completed vs total tasks for today (e.g., "5 von 12 erledigt")
|
||||||
|
5. When no tasks are due, an encouraging "all clear" empty state is shown instead of an empty list
|
||||||
|
6. Each room card displays a cleanliness indicator derived from the ratio of overdue tasks to total tasks in that room
|
||||||
|
**Plans**: TBD
|
||||||
|
|
||||||
|
### Phase 4: Notifications
|
||||||
|
**Goal**: Users receive a daily summary notification reminding them of today's task count, and can control notification behavior from settings
|
||||||
|
**Depends on**: Phase 2
|
||||||
|
**Requirements**: NOTF-01, NOTF-02
|
||||||
|
**Success Criteria** (what must be TRUE):
|
||||||
|
1. User receives one daily notification showing the count of tasks due today, scheduled at a configurable time
|
||||||
|
2. User can enable or disable notifications from the Settings tab, and the change takes effect immediately
|
||||||
|
3. Notifications are correctly rescheduled after device reboot (RECEIVE_BOOT_COMPLETED receiver active)
|
||||||
|
4. On Android API 33+, the app requests POST_NOTIFICATIONS permission at the appropriate moment and degrades gracefully if denied
|
||||||
|
**Plans**: TBD
|
||||||
|
|
||||||
|
## Progress
|
||||||
|
|
||||||
|
**Execution Order:**
|
||||||
|
Phases execute in numeric order: 1 → 2 → 3 → 4
|
||||||
|
|
||||||
|
Note: Phase 4 depends on Phase 2 (needs scheduling data) but can be developed in parallel with Phase 3.
|
||||||
|
|
||||||
|
| Phase | Plans Complete | Status | Completed |
|
||||||
|
|-------|----------------|--------|-----------|
|
||||||
|
| 1. Foundation | 0/TBD | Not started | - |
|
||||||
|
| 2. Rooms and Tasks | 0/TBD | Not started | - |
|
||||||
|
| 3. Daily Plan and Cleanliness | 0/TBD | Not started | - |
|
||||||
|
| 4. Notifications | 0/TBD | Not started | - |
|
||||||
65
.planning/STATE.md
Normal file
65
.planning/STATE.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# Project State
|
||||||
|
|
||||||
|
## Project Reference
|
||||||
|
|
||||||
|
See: .planning/PROJECT.md (updated 2026-03-15)
|
||||||
|
|
||||||
|
**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 focus:** Phase 1: Foundation
|
||||||
|
|
||||||
|
## Current Position
|
||||||
|
|
||||||
|
Phase: 1 of 4 (Foundation)
|
||||||
|
Plan: 0 of TBD in current phase
|
||||||
|
Status: Ready to plan
|
||||||
|
Last activity: 2026-03-15 — Roadmap created, all 4 phases defined, 30 requirements mapped
|
||||||
|
|
||||||
|
Progress: [░░░░░░░░░░] 0%
|
||||||
|
|
||||||
|
## Performance Metrics
|
||||||
|
|
||||||
|
**Velocity:**
|
||||||
|
- Total plans completed: 0
|
||||||
|
- Average duration: -
|
||||||
|
- Total execution time: 0 hours
|
||||||
|
|
||||||
|
**By Phase:**
|
||||||
|
|
||||||
|
| Phase | Plans | Total | Avg/Plan |
|
||||||
|
|-------|-------|-------|----------|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
**Recent Trend:**
|
||||||
|
- Last 5 plans: none yet
|
||||||
|
- Trend: -
|
||||||
|
|
||||||
|
*Updated after each plan completion*
|
||||||
|
|
||||||
|
## Accumulated Context
|
||||||
|
|
||||||
|
### Decisions
|
||||||
|
|
||||||
|
Decisions are logged in PROJECT.md Key Decisions table.
|
||||||
|
Recent decisions affecting current work:
|
||||||
|
|
||||||
|
- [Pre-phase]: Riverpod 3.3 requires Flutter 3.41+ — verify before scaffolding
|
||||||
|
- [Pre-phase]: All due dates stored as date-only (calendar day), not DateTime — enforce from first migration
|
||||||
|
- [Pre-phase]: German-only UI for MVP; localization infrastructure (ARB + AppLocalizations) required from Phase 1 even with one locale
|
||||||
|
- [Pre-phase]: riverpod_lint must be active before any feature code — catches ref.watch outside build() at analysis time
|
||||||
|
- [Pre-phase]: drift_dev make-migrations workflow must be established in Phase 1 — recovery cost is data loss
|
||||||
|
|
||||||
|
### Pending Todos
|
||||||
|
|
||||||
|
None yet.
|
||||||
|
|
||||||
|
### Blockers/Concerns
|
||||||
|
|
||||||
|
- [Research]: Recurrence policy edge cases not fully specified — "monthly" on the 31st, seasonal interval definition. Decide before Phase 2 planning.
|
||||||
|
- [Research]: Notification time configuration (user-adjustable vs hardcoded) not resolved. Decide before Phase 4 planning.
|
||||||
|
- [Research]: First-launch template seeding UX (silent vs prompted) not resolved. Decide before Phase 2 planning.
|
||||||
|
|
||||||
|
## Session Continuity
|
||||||
|
|
||||||
|
Last session: 2026-03-15
|
||||||
|
Stopped at: Roadmap created — ready to plan Phase 1
|
||||||
|
Resume file: None
|
||||||
Reference in New Issue
Block a user