Calendars as entities, uniform widget contract, multi-dashboard tasks
Architecture refinements before module work begins: - Calendars become first-class entities (mirror of lists). Each calendar has its own visibility (private | household) and is independently shareable. Updated CLAUDE.md data model and task 10. - Drop the singleton/parameterized split for dashboard widgets. Every widget declares a configSchema + defaultConfig + resolveConfigOptions and every placement is an independent instance — same widgetId can appear multiple times on one dashboard pointed at different things. Updated task 04 contract; tasks 11/12 widget sections aligned. - Add tasks 25 (multiple dashboards per user) and 26 (customizable layout + widget configuration). Replaces the previously-considered three-task plan with a cleaner two-task split that the uniform contract enables. Phase 3 index updated; STATUS records the rationale. - Task 20 reframed as a single-dashboard MVP that exercises the new contract end-to-end before the customization layer lands.
This commit is contained in:
@@ -30,9 +30,10 @@ Seed: one default list of each type per household on first access (idempotent).
|
||||
|
||||
### Manifest
|
||||
|
||||
- Entity type `lists.list` (shareable read+write via share token), `lists.item` (not directly shareable; inherits via list).
|
||||
- Quick-adds: "Add to shopping", "Add to tasks" (each adds a single item to the default list of that type).
|
||||
- Dashboard widget: top 5 unchecked shopping items + open tasks assigned to me.
|
||||
- Entity types: `lists.list` (shareable read+write via share token), `lists.item` (inherits via list, not directly shareable).
|
||||
- Quick-adds: "Add to shopping" / "Add to tasks" (single item to the household's default list of that type), "New list".
|
||||
- Widget (uniform contract per task 04):
|
||||
- **`lists.list`** — `config: { listIds: "all" | string[]; showCompleted: boolean; limit?: number }`. Default `{ listIds: "all", showCompleted: false }`. `resolveConfigOptions` returns the user's accessible lists with type/name. Multiple instances per dashboard supported (one per list, or merged across several).
|
||||
|
||||
## Out of scope
|
||||
|
||||
|
||||
Reference in New Issue
Block a user