| 02-rooms-and-tasks |
01 |
database |
| drift |
| sqlite |
| dao |
| scheduling |
| templates |
| domain-models |
|
| phase |
provides |
| 01-foundation |
AppDatabase with schema v1, NativeDatabase.memory() test pattern, project scaffold |
|
|
| Drift schema v2 with Rooms, Tasks, TaskCompletions tables |
| RoomsDao with CRUD, stream queries, cascade delete, reorder, room stats |
| TasksDao with CRUD, stream queries, completeTask transaction, overdue detection |
| Pure scheduling utility (calculateNextDueDate, catchUpToPresent) |
| Domain enums IntervalType (8 types), EffortLevel (3 levels), FrequencyInterval model |
| formatRelativeDate German formatter |
| curatedRoomIcons icon list with 25 Material Icons |
| TaskTemplate model and roomTemplates for 14 room types |
| detectRoomType name-matching utility with alias support |
|
| 02-rooms-and-tasks |
| 03-daily-plan |
| 04-notifications |
|
| added |
patterns |
|
|
| drift-dao-with-stream-queries |
| pure-scheduling-utility |
| task-completion-transaction |
| intEnum-for-enums |
| cascade-delete-in-transaction |
| const-template-data |
|
|
| created |
modified |
| lib/features/tasks/domain/frequency.dart |
| lib/features/tasks/domain/effort_level.dart |
| lib/features/tasks/domain/scheduling.dart |
| lib/features/tasks/domain/relative_date.dart |
| lib/features/rooms/domain/room_icons.dart |
| lib/features/rooms/data/rooms_dao.dart |
| lib/features/tasks/data/tasks_dao.dart |
| lib/features/templates/data/task_templates.dart |
| test/features/tasks/domain/scheduling_test.dart |
| test/features/rooms/data/rooms_dao_test.dart |
| test/features/tasks/data/tasks_dao_test.dart |
| test/features/templates/task_templates_test.dart |
| drift_schemas/household_keeper/drift_schema_v2.json |
|
| lib/core/database/database.dart |
| lib/core/database/database.g.dart |
| test/core/database/database_test.dart |
|
|
| Scheduling functions are top-level pure functions with DateTime today parameter for testability |
| Calendar-anchored intervals use anchorDay nullable field for month-clamping memory |
| RoomWithStats computed via asyncMap on watchAllRooms stream, not a custom SQL join |
| Templates stored as Dart const map, not JSON assets, for type safety |
| detectRoomType uses contains-based matching with alias map for flexible room name detection |
|
| DAO stream queries with .watch() for reactive UI data |
| Cascade delete via transaction (completions -> tasks -> room) |
| Task completion as single DAO transaction (record + calculate + catch-up + update) |
| intEnum for Dart enum persistence with index stability comments |
| In-memory database testing with NativeDatabase.memory() |
| Testable date logic via today parameter injection |
|
| 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 |
|
8min |
2026-03-15 |