docs: sync data-model, glossary en specs met huidig schema (#164)

Brengt de docs gelijk met de werkelijkheid na PBI-46/47/50/58/59/61/63
en M12. Belangrijkste fixes:

- data-model.md herschreven naar prisma/schema.prisma: nieuwe entiteiten
  (Idea, IdeaLog, IdeaProduct, UserQuestion, ClaudeQuestion, ClaudeJob,
  SprintRun, SprintTaskExecution, ClaudeWorker, LoginPairing,
  PushSubscription, ModelPrice, ProductMember), nieuwe enums
  (FAILED/EXCLUDED, OPEN/CLOSED/ARCHIVED, ADMIN, etc.) en codes
  (PBI/ST/T/SP-N) toegevoegd; verwijderde todos-tabel verwijderd.
- glossary.md: Sprint zonder "max 1 actief" (PBI-63), Story/Task incl.
  FAILED/EXCLUDED, Todo verwijderd, Idea/SprintRun/ClaudeJob/
  verify_result toegevoegd.
- project-structure.md: app/(app)/todos vervangen door
  ideas/insights/jobs/manual/admin/solo; api-tree volledig.
- overview.md: "geen realtime in v1" en Docker-rationale herschreven —
  Postgres LISTEN/NOTIFY + SSE, claude_jobs als queue, opt-in
  Docker-deploy-flow.
- functional.md: F-08 Todo-lijst -> Ideeen-laag, F-09 multi-sprint,
  F-10 Task-status incl. FAILED/EXCLUDED, F-11 endpoint-lijst,
  navigatiestructuur, datamodel-schets en Flow 3 bijgewerkt.
- README.md API-tabel: /api/todos weg, ideas/jobs/users/profile/health
  toegevoegd, kort over realtime/auth-pair/internal/cron.
- patterns + mcp-integration runbook: Todo-/ACTIVE-references vervangen
  door Idea/OPEN; create_todo MCP-tool note over verwijdering.

Linkcheck groen (105 files), INDEX hergegenereerd (98 docs).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Janpeter Visser 2026-05-08 08:16:44 +02:00 committed by GitHub
parent 3842c05ae9
commit f7464db837
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 544 additions and 424 deletions

View file

@ -3,7 +3,7 @@ title: "Project Structure, Stores, Realtime & Job Queue"
status: active
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-03
last_updated: 2026-05-08
related: [data-model.md](./data-model.md)
---
@ -23,11 +23,20 @@ scrum4me/
│ │ │ └── [id]/
│ │ │ ├── layout.tsx # Zet actief product in Zustand store
│ │ │ ├── page.tsx # Product Backlog (gesplitst scherm)
│ │ │ ├── solo/page.tsx # Solo board (Kanban per ingelogde gebruiker)
│ │ │ ├── sprint/
│ │ │ │ ├── page.tsx # Sprint Backlog (drie-paneel scherm)
│ │ │ │ └── planning/page.tsx # Redirect → /sprint
│ │ ├── todos/page.tsx
│ │ │ └── sprint/
│ │ │ ├── page.tsx # Sprint Backlog (drie-paneel scherm)
│ │ │ └── planning/page.tsx # Redirect → /sprint
│ │ ├── solo/page.tsx # Solo board (top-level; Kanban per ingelogde gebruiker)
│ │ ├── ideas/ # Idea-laag (M12) — vervangt vroegere /todos
│ │ │ ├── page.tsx
│ │ │ └── [id]/page.tsx
│ │ ├── jobs/page.tsx # Job-queue inzicht (PBI-59)
│ │ ├── insights/page.tsx # Tokenkosten + run-statistieken
│ │ ├── manual/ # In-app developer manual (PBI-58)
│ │ │ ├── layout.tsx
│ │ │ ├── _components/
│ │ │ └── [[...slug]]/page.tsx # Catch-all route voor alle manual-secties
│ │ ├── admin/ # Admin-only schermen
│ │ └── settings/
│ │ ├── page.tsx # Profiel, account, PB-overzicht, rollen, tokens
│ │ └── tokens/page.tsx
@ -41,22 +50,21 @@ scrum4me/
│ │ └── products/[id]/
│ │ ├── page.tsx # Mobile Product Backlog (tab-mode op <1024px)
│ │ └── solo/page.tsx # Mobile Solo (3-koloms-kanban)
│ ├── api/ # REST API voor Claude Code
│ │ ├── products/
│ │ │ └── [id]/
│ │ │ └── next-story/route.ts
│ │ ├── profile/
│ │ │ └── avatar/route.ts # POST upload + GET serve profielfoto
│ │ ├── sprints/
│ │ │ └── [id]/
│ │ │ └── tasks/route.ts
│ │ ├── stories/
│ │ │ └── [id]/
│ │ │ ├── log/route.ts
│ │ │ └── tasks/reorder/route.ts
│ │ ├── tasks/
│ │ │ └── [id]/route.ts
│ │ └── todos/route.ts
│ ├── api/ # REST API voor Claude Code en interne SSE
│ │ ├── auth/pair/ # QR-pairing endpoints (start/claim/stream)
│ │ ├── cron/ # cleanup-agent-artifacts, expire-questions
│ │ ├── debug/ # emit-test-notify, realtime-stream (dev-only)
│ │ ├── health/route.ts # Liveness + ?db=1 ping
│ │ ├── ideas/ # Idea CRUD + grill/plan trigger
│ │ ├── internal/push/ # Web-push send + test-send (INTERNAL_PUSH_SECRET)
│ │ ├── jobs/[id]/sub-tasks/ # SprintTaskExecution-rows uitlezen
│ │ ├── products/[id]/ # next-story, claude-context
│ │ ├── profile/avatar/route.ts # POST upload + GET serve profielfoto
│ │ ├── realtime/ # SSE-streams: backlog, jobs, notifications, solo
│ │ ├── sprints/[id]/tasks/ # GET sprint-taken
│ │ ├── stories/[id]/ # log + tasks/reorder
│ │ ├── tasks/[id]/route.ts # PATCH status + implementation_plan
│ │ └── users/[id]/avatar/ # GET avatar van een specifieke user
├── components/
│ ├── ui/ # shadcn/ui primitieven
│ ├── split-pane/ # Gesplitst scherm component
@ -65,7 +73,9 @@ scrum4me/
│ ├── products/ # ProductForm, TeamManager, ArchiveProductButton
│ ├── settings/ # RoleManager, ProfileEditor, LeaveProductButton
│ ├── mobile/ # LandscapeGuard, MobileTabBar, LogoutButton
│ └── dnd/ # dnd-kit wrappers
│ ├── ideas/ # Idea-detail, grill-chat, plan-preview
│ ├── jobs/ # Job-card, filter-popover, view-switch
│ └── dnd/ # dnd-kit wrappers
├── lib/
│ ├── prisma.ts # Prisma Client singleton
│ ├── session.ts # iron-session configuratie