From 7e3ae6eb04d9fe577507575e4478f05d7c63e45e Mon Sep 17 00:00:00 2001 From: ginnoir Date: Wed, 6 May 2026 03:49:03 -0500 Subject: [PATCH] Implement lists module and dev login setup --- .env.example | 7 + .gitignore | 1 + STATUS.md | 10 +- docs/decisions/0002-list-sse-notify.md | 19 ++ docs/dev-login.md | 112 ++++++++ docs/tasks/09-production-dev-login-removal.md | 47 ++++ drizzle/0004_opposite_wraith.sql | 30 ++ drizzle/0005_auth_schema_repair.sql | 55 ++++ scripts/seed.ts | 4 + src/app/api/lists/[id]/events/route.ts | 58 ++++ src/app/lists/[id]/page.tsx | 11 + src/app/lists/page.tsx | 7 + src/app/login/page.tsx | 26 ++ src/lib/auth.ts | 2 + src/lib/db.ts | 3 +- src/lib/dev-login-config.ts | 5 + src/lib/dev-login.ts | 79 ++++++ src/middleware.ts | 29 +- .../calendar/components/calendar-shell.tsx | 12 +- src/modules/calendar/server/actions.ts | 44 +-- src/modules/lists/components/list-detail.tsx | 189 +++++++++++++ src/modules/lists/components/lists-index.tsx | 101 +++++++ src/modules/lists/manifest.ts | 23 -- src/modules/lists/manifest.tsx | 92 +++++++ src/modules/lists/schema.ts | 46 ++++ src/modules/lists/server/actions.ts | 201 ++++++++++++++ src/modules/lists/server/defaults.ts | 65 +++++ src/modules/lists/server/queries.ts | 256 ++++++++++++++++++ src/modules/lists/server/realtime.ts | 12 + tests/e2e/calendar.spec.ts | 16 +- tests/e2e/lists.spec.ts | 26 ++ 31 files changed, 1525 insertions(+), 63 deletions(-) create mode 100644 docs/decisions/0002-list-sse-notify.md create mode 100644 docs/dev-login.md create mode 100644 docs/tasks/09-production-dev-login-removal.md create mode 100644 drizzle/0004_opposite_wraith.sql create mode 100644 drizzle/0005_auth_schema_repair.sql create mode 100644 src/app/api/lists/[id]/events/route.ts create mode 100644 src/app/lists/[id]/page.tsx create mode 100644 src/app/lists/page.tsx create mode 100644 src/lib/dev-login-config.ts create mode 100644 src/lib/dev-login.ts create mode 100644 src/modules/lists/components/list-detail.tsx create mode 100644 src/modules/lists/components/lists-index.tsx delete mode 100644 src/modules/lists/manifest.ts create mode 100644 src/modules/lists/manifest.tsx create mode 100644 src/modules/lists/schema.ts create mode 100644 src/modules/lists/server/actions.ts create mode 100644 src/modules/lists/server/defaults.ts create mode 100644 src/modules/lists/server/queries.ts create mode 100644 src/modules/lists/server/realtime.ts create mode 100644 tests/e2e/lists.spec.ts diff --git a/.env.example b/.env.example index 1714092..4edc1be 100644 --- a/.env.example +++ b/.env.example @@ -7,6 +7,13 @@ DATABASE_URL=postgres://famapp:famapp@localhost:5432/famapp # Auth.js AUTH_SECRET=replace-with-openssl-rand-base64-32 +# Local development only. Enables a /login "Dev login" button that creates a +# database session for DEV_LOGIN_EMAIL without contacting Authentik. +ENABLE_DEV_LOGIN=false +DEV_LOGIN_EMAIL=dev@famapp.local +DEV_LOGIN_NAME=Dev User +DEV_HOUSEHOLD_NAME=Home + # OIDC (Authentik) AUTH_OIDC_ISSUER=https://auth.ginnoir.com/application/o/famapp/ AUTH_OIDC_CLIENT_ID=replace-me diff --git a/.gitignore b/.gitignore index 06ce011..5211591 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,7 @@ desktop.ini coverage/ playwright-report/ test-results/ +tests/.auth/ # Drizzle generated artifacts (migrations themselves are committed) drizzle/meta/ diff --git a/STATUS.md b/STATUS.md index 6b176d8..b693912 100644 --- a/STATUS.md +++ b/STATUS.md @@ -17,10 +17,16 @@ Living progress tracker. Update at the end of each task. The canonical brief is - **08 — Theming infrastructure**. CSS-variable multi-theme system (`default` + `warm`) × `{light, dark, system}`. `users.theme` + `users.themeMode` columns in migration `0002_naive_starbolt.sql`. Theme registry in `src/modules/_core/themes.ts` (THEMES/THEME_MODES arrays — adding a third theme is one CSS block + one registry entry). Root layout reads session and sets `data-theme`/`dark` on `` server-side; inline pre-paint `