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.
72 lines
2.6 KiB
Markdown
72 lines
2.6 KiB
Markdown
# Task briefs
|
|
|
|
Each file here is a self-contained brief for a sub-session (typically Sonnet) to execute one chunk of work. Briefs assume the executor has read [`/CLAUDE.md`](../../CLAUDE.md) — do not restate the stack or architecture there.
|
|
|
|
## How to use a brief
|
|
|
|
1. Read `/CLAUDE.md` first.
|
|
2. Read the task file end-to-end.
|
|
3. Stop when **all** acceptance criteria pass. Do not bolt on extra scope.
|
|
4. If a brief turns out to be wrong, update the brief in the same commit as the code.
|
|
|
|
## Brief format
|
|
|
|
Every task file has these sections:
|
|
|
|
- **Goal** — one sentence.
|
|
- **Why** — what this unlocks; how it fits the larger plan.
|
|
- **Depends on** — task numbers that must be done first.
|
|
- **Scope** — bullet list of what to build.
|
|
- **Out of scope** — explicit non-goals to prevent drift.
|
|
- **Acceptance criteria** — checkable list. Done = all checked.
|
|
- **Notes** — gotchas, recommended libs, sketches.
|
|
|
|
## Phase index
|
|
|
|
### Phase 1 — Scaffold
|
|
|
|
- [01 — Repo init & tooling](01-repo-init.md)
|
|
- [02 — Next.js app skeleton](02-nextjs-skeleton.md)
|
|
- [03 — Drizzle + Postgres setup](03-drizzle-postgres.md)
|
|
- [04 — Module loader & registry](04-module-loader.md)
|
|
- [05 — Compose stack & Caddy](05-compose-caddy.md)
|
|
- [06 — Authentik install + OIDC integration](06-authentik-oidc.md)
|
|
- [07 — Household seeding & session](07-household-seed.md)
|
|
- [08 — Theming infrastructure (multi-theme + dark mode)](08-theming.md)
|
|
|
|
### Phase 2 — Core modules
|
|
|
|
- [10 — Calendar module](10-calendar-module.md)
|
|
- [11 — Lists module (shopping + task)](11-lists-module.md)
|
|
- [12 — Notes module](12-notes-module.md)
|
|
|
|
### Phase 3 — Dashboard & UX
|
|
|
|
- [20 — Dashboard composition (single-dashboard MVP)](20-dashboard.md)
|
|
- [21 — Quick-add registry](21-quick-add.md)
|
|
- [22 — Activity log](22-activity-log.md)
|
|
- [25 — Multiple dashboards per user](25-multiple-dashboards.md)
|
|
- [26 — Customizable layout + widget configuration](26-customizable-layout.md)
|
|
|
|
### Phase 4 — Sharing
|
|
|
|
- [30 — Share-link service](30-share-links.md)
|
|
- [31 — Public share viewer (`/s/<token>`)](31-share-viewer.md)
|
|
|
|
### Phase 5 — Notifications & reminders
|
|
|
|
- [40 — Web Push (VAPID)](40-web-push.md)
|
|
- [41 — Reminders engine](41-reminders.md)
|
|
- [42 — Notification bus + ntfy adapter](42-notification-bus.md)
|
|
|
|
### Phase 6 — PWA polish
|
|
|
|
- [50 — Manifest, icons, install prompt](50-pwa-shell.md)
|
|
- [51 — Offline shell + service worker caching](51-offline.md)
|
|
|
|
### Phase 7 — Hardening
|
|
|
|
- [60 — Postgres backups (pg_dump cron)](60-backups.md)
|
|
- [61 — Rate limiting on share links](61-rate-limit.md)
|
|
- [62 — Structured logging](62-logging.md)
|