diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index 44db0b5..b4d60bb 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -119,13 +119,42 @@ Which phases cover which requirements. Updated during roadmap creation. | 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:** -- v1 requirements: 22 total -- Mapped to phases: 0 -- Unmapped: 22 +- v1 requirements: 30 total +- Mapped to phases: 30 +- Unmapped: 0 --- *Requirements defined: 2026-03-15* -*Last updated: 2026-03-15 after initial definition* +*Last updated: 2026-03-15 after roadmap creation* diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md new file mode 100644 index 0000000..2788094 --- /dev/null +++ b/.planning/ROADMAP.md @@ -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 | - | diff --git a/.planning/STATE.md b/.planning/STATE.md new file mode 100644 index 0000000..385eb71 --- /dev/null +++ b/.planning/STATE.md @@ -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