Scrum4Me/docs/INDEX.md
Janpeter Visser 7ae8a24372
Sprint: pbi-55 (#156)
* ST-cmovs79lt: Schema + migratie PushSubscription model

Voeg PushSubscription model toe aan prisma/schema.prisma met
snake_case-conventie, relation field op User, en bijbehorende
migratie (push_subscriptions tabel, FK + index op user_id).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ST-cmovs7e3o: web-push dependency + VAPID env vars feature-gated

Voeg web-push + @types/web-push toe aan package.json.
Registreer NEXT_PUBLIC_VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY,
VAPID_SUBJECT en INTERNAL_PUSH_SECRET als .optional() in lib/env.ts.
Documenteer alle vier in .env.example en README.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ST-cmovs7jgr: lib/push-server.ts met sendPushToUser + stale-cleanup

Server-only push-lib met VAPID feature-gate, send naar alle
subscriptions van een user, en automatische cleanup bij 404/410.
Unit tests: success-pad, 410 verwijdert sub, 404 verwijdert sub,
andere errors loggen zonder delete.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ST-cmovs7ouz: lib/push-client.ts client-side push helpers + stub actions/push.ts

Client-side helpers: isPushSupported, isIOSSafari, isStandalonePWA,
urlBase64ToUint8Array, subscribeToPush, unsubscribeFromPush.
Stub actions/push.ts zodat imports resolven (implementatie volgt
in volgende taak). Unit tests voor urlBase64ToUint8Array.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ST-cmovs7ut4: actions/push.ts subscribeToPushAction + unsubscribeFromPushAction

Vervangt stub met volledige implementatie: requireUser via getSession,
demo-block, Zod-validatie, upsert met user_id-scoping en user-scoped
deleteMany. Tests (8): idempotentie, demo-block, unauthenticated, invalid input.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ST-cmovs80c1: POST /api/internal/push/send met constant-time Bearer check

Route: 503 als INTERNAL_PUSH_SECRET uitstaat, 401 bij verkeerd secret
(timingSafeEqual), 400 bij invalid JSON, 422 bij Zod-fout, 204 bij succes.
push-server.ts: env-import vervangen door process.env om SESSION_SECRET
validatie tijdens build te omzeilen. Tests aangepast.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ST-cmovs862j: Admin test-send route + public/sw.js service worker

POST /api/internal/push/test-send: requireAdmin check (redirect bij
niet-admin), optioneel body met defaults, roept sendPushToUser aan, 204.
public/sw.js: push-handler met showNotification, notificationclick met
same-origin guard, focus bestaand venster of openWindow.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ST-cmovs8jvq: PushToggle component met 3 states + iOS-banner

Client component met states loading/unsupported/ios-needs-install/
denied/subscribed/unsubscribed. useEffect detecteert initial status,
permission-prompt alleen via user-click. iOS-banner NL, denied-uitleg,
subscribe/unsubscribe knoppen met sonner-toasts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ST-cmovs8psg: notifications-sheet + iOS meta-tags in layout

notifications-sheet.tsx: PushToggle onderin met sectie
'Notificatie-instellingen' en visuele scheidslijn.
app/layout.tsx: appleWebApp.capable, statusBarStyle en
mobile-web-app-capable meta-tags toegevoegd via Next.js Metadata API.
manifest.json had al display: standalone.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ST-cmovs8vxj: docs/patterns/web-push.md pattern-documentatie

Architectuur-diagram, payload-shape, foutcodes, VAPID-config,
iOS-quirks, demo-users blokkade, trigger-voorbeelden (server +
HTTP) en admin-testroute curl-voorbeeld.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 21:46:01 +02:00

11 KiB

Documentation Index

Auto-generated on 2026-05-07 from front-matter and headings.

Architecture Decision Records

# Title Status
0000 ADR-0000: Record architecture decisions accepted
0001 ADR-0001: Use @base-ui/react instead of Radix UI accepted
0002 ADR-0002: Use float sort_order for drag-and-drop ordering accepted
0003 ADR-0003: One branch per milestone, push only after user test accepted
0004 ADR-0004: DB enums UPPER_SNAKE, API enums lowercase, mapped exclusively via lib/task-status.ts accepted
0005 ADR-0005: Use iron-session for authentication instead of NextAuth/Clerk/Supabase Auth accepted
0006 ADR-0006: Demo-user write protection enforced in three layers accepted
0007 ADR-0007: Agent ↔ user question channel via persistent table + LISTEN/NOTIFY accepted
0008 ADR-0008: Agent instructions in CLAUDE.md + topical runbooks accepted
0010 ADR-0010: Eén product = één repo; cross-product planning vereist (later) een Initiative-laag accepted

Specifications

Title Status Updated
AnswerModal Profiel active 2026-05-04
BatchEnqueueBlockerDialog Profiel active 2026-05-04
IdeaDialog Profiel active 2026-05-04
PbiDialog Profiel active 2026-05-04
ProductDialog Profiel active 2026-05-04
Sprint Dialogs Profiel active 2026-05-04
StoryDialog Profiel active 2026-05-04
TaskDetailDialog Profiel active 2026-05-04
TaskDialog Profiel active 2026-05-03
Scrum4Me — Functionele Specificatie active 2026-05-04
DevPlanner — User Personas active 2026-05-03

Plans

Title Status Updated
Plan — Auto-PR + selectieve deploy-controle + sync-zicht (end-to-end batch flow)
Docs-restructuur — geoptimaliseerd voor AI-lookup proposal 2026-05-02
PBI Bulk-Create Spec — Docs-Restructure for AI-Optimized Lookup done 2026-05-03
Landing v2 — lokaal & veilig + architectuurdiagram active 2026-05-03
Landing v3 — van idee tot pull request active 2026-05-04
M10 — Password-loze inlog via QR-pairing active 2026-05-03
M11 — Claude vraagt, gebruiker antwoordt active 2026-05-03
M12 — Idea entity + Grill/Plan Claude jobs planned
M9 — Actief Product Backlog active 2026-05-03
PBI-11 — Mobile-shell met landscape-lock (settings + backlog + solo)
Advies - SprintRun, PR en worktree lifecycle als state machines draft 2026-05-06
ST-1109 — PBI krijgt een status (Ready / Blocked / Done) active 2026-05-03
ST-1110 — Demo gebruiker read-only active 2026-05-03
ST-1111 — Voer uit-knop met Claude Code job queue active 2026-05-03
ST-1114 — Copilot reviews op dashboard active 2026-05-03
Tweede Claude Agent — Planning Agent proposal 2026-05-03
Scrum4Me — v1.0 readiness active 2026-05-04

Archive

Title Updated
CLAUDE.md workflow-update na M7 + ST-509/511/512/513 2026-05-03
Herbruikbaar scripts/insert-milestone.ts 2026-05-03
Realtime updates voor Solo Paneel (M8) 2026-05-03

Patterns

Title Status Updated
Bidirectionele async-comms MCP-agent ↔ user active 2026-05-03
Entity Dialog active 2026-05-03
iron-session active 2026-05-03
Prisma Client singleton active 2026-05-03
Proxy (route protection) active 2026-05-03
QR-pairing via unauth-SSE + pre-auth cookie active 2026-05-03
Realtime NOTIFY payload — veldnaam-contract active 2026-05-03
Route Handler (REST API) active 2026-05-03
Server Action active 2026-05-03
Float sort_order (drag-and-drop volgorde) active 2026-05-03
Story met UI-component active 2026-05-03
Web Push active 2026-05-07
Zustand optimistische update + rollback active 2026-05-03

Other Docs

Title Path Status Updated
Scrum4Me REST API api.md active 2026-05-03
Scrum4Me REST API api/rest-contract.md active 2026-05-03
Scrum4Me — Technische Architectuur (breadcrumb) architecture.md active 2026-05-03
Authentication, Sessions & Demo Policy architecture/auth-and-sessions.md active 2026-05-03
Claude ↔ User Question Channel architecture/claude-question-channel.md active 2026-05-03
Data Model & Prisma Schema architecture/data-model.md active 2026-05-03
Scrum4Me — Architecture Overview architecture/overview.md active 2026-05-03
Project Structure, Stores, Realtime & Job Queue architecture/project-structure.md active 2026-05-03
QR-pairing Login Flow architecture/qr-pairing.md active 2026-05-03
Sprint execution modes — PER_TASK vs SPRINT_BATCH architecture/sprint-execution-modes.md active 2026-05-07
Scrum4Me — Implementatie Backlog backlog.md active 2026-05-03
Scrum4Me — Implementatie Backlog backlog/index.md active 2026-05-03
DevPlanner — Product Backlog backlog/product-historical.md active 2026-05-03
Agent Instruction Audit decisions/agent-instructions-history.md active 2026-05-03
Scrum4Me — Styling & Design System design/styling.md active 2026-05-03
Docker smoke test — task 1 docker-smoke/2-mei-task-1.md done 2026-05-03
Docker smoke test — task 2 docker-smoke/2-mei-task-2.md done 2026-05-03
Scrum4Me — Functionele Specificatie functional.md active 2026-05-03
Scrum4Me — Glossary glossary.md active 2026-05-03
Overview manual/01-overview.md active 2026-05-07
Statuses & Transitions manual/02-statuses-and-transitions.md active 2026-05-07
Git Workflow manual/03-git-workflow.md active 2026-05-07
MCP Integration manual/04-mcp-integration.md active 2026-05-07
Docker manual/05-docker.md active 2026-05-07
Troubleshooting manual/06-troubleshooting.md active 2026-05-07
Scrum4Me Developer Manual manual/index.md active 2026-05-07
Scrum4Me — Styling & Design System md3-color-scheme.md active 2026-05-03
Obsidian as Personal Authoring Layer obsidian-authoring.md active 2026-05-02
PbiDialog Profiel pbi-dialog.md active 2026-05-03
DevPlanner — User Personas personas.md active 2026-05-03
DevPlanner — Product Backlog product-backlog.md active 2026-05-03
Scrum4Me — API Test Plan qa/api-test-plan.md active 2026-05-03
Realtime smoke-checklist — PBI / Story / Task realtime-smoke.md active 2026-05-03
Agent-flow: open issues & decision log runbooks/agent-flow-pitfalls.md active 2026-05-03
Auto-PR flow: van story-DONE naar gemergde PR runbooks/auto-pr-flow.md active 2026-05-06
Branch, PR & Commit Strategy runbooks/branch-and-commit.md active 2026-05-03
Deploy-controle: triggers, labels, path-filter runbooks/deploy-control.md active 2026-05-07
Vercel Deployment runbooks/deploy-vercel.md active 2026-05-03
MCP Integration — Scrum4Me Tools runbooks/mcp-integration.md active 2026-05-03
v1.0 Smoke Test Checklist runbooks/v1-smoke-test.md active 2026-05-04
Worker idempotency & job-status protocol runbooks/worker-idempotency.md active 2026-05-05
StoryDialog Profiel story-dialog.md active 2026-05-03
TaskDialog Profiel task-dialog.md active 2026-05-03
Scrum4Me — API Test Plan test-plan.md active 2026-05-03