Removed references to automatic logging of implementation plans, test results, and commits in stories. Updated task instructions and conventions for clarity.
4.3 KiB
CLAUDE.md — Scrum4Me
Dit is het centrale instructiedocument voor Claude Code. Lees dit volledig voordat je iets bouwt.
Wat is Scrum4Me?
Een desktop-first fullstack webapplicatie voor solo developers en kleine Scrum Teams die meerdere softwareprojecten parallel beheren. De app organiseert werk hiërarchisch (product → PBI → story → taak), biedt gesplitste planningsschermen met drag-and-drop, en integreert met Claude Code via een REST API.
Specificatiedocumenten
Lees het relevante document voordat je aan een feature begint. Nooit gokken over requirements.
| Document | Gebruik voor |
|---|---|
scrum4me-functional-spec.md |
Acceptatiecriteria, randgevallen, user flows |
scrum4me-architecture.md |
Stack, datamodel, Prisma schema, Zustand stores |
scrum4me-backlog.md |
Welke task bouwen, volgorde, "done when"-criteria |
scrum4me-personas.md |
Lars (primair), Dina, Remi — gebruik bij UI-beslissingen |
scrum4me-product-backlog.md |
Testdata voor de seed |
scrum4me-styling.md |
Lees dit voor elk component — MD3-kleuren, shadcn patronen |
Waar te beginnen
Volg de backlog strikt op volgorde. Start bij ST-001. Sla geen milestone over.
M0 (ST-001–008) → M1 (ST-101–110) → M2 (ST-201–210)
→ M3 (ST-301–312) → M4 (ST-401–410) → M5 (ST-501–506)
→ M6 (ST-601–612)
Per task:
- Lees de task in
scrum4me-backlog.md - Zoek de bijbehorende feature-spec in
scrum4me-functional-spec.md - Lees het relevante patroon in
docs/patterns/als dat van toepassing is - Bouw — test — verifieer de "Done when"-criteria
- vraag of code juiste is
- Commit:
feat: ST-001 project scaffolding - vraag of volgende taak moet worden gedaan
Tech stack
Next.js 16 (App Router) + React 19
TypeScript strict
Tailwind CSS + shadcn/ui
MD3 kleurensysteem via theme.css
Zustand (client state)
dnd-kit (drag-and-drop)
Prisma v7 + PostgreSQL (Neon) | SQLite (lokaal)
iron-session (auth cookies)
bcryptjs + Zod + Sonner
⚠️ Stylingregel: Gebruik nooit
bg-blue-500of willekeurige Tailwind-kleuren. Gebruik altijd semantische MD3-tokens:bg-primary,bg-status-done,bg-priority-critical. Ziescrum4me-styling.mdvoor alle patronen.
⚠️ Next.js-versie: Lees
node_modules/next/dist/docs/bij twijfel — API's kunnen afwijken van trainingsdata.
Implementatiepatronen
Lees het relevante patroon vóór je begint. Nooit uit het hoofd schrijven.
| Patroon | Bestand |
|---|---|
| iron-session (auth cookies) | docs/patterns/iron-session.md |
| Prisma Client singleton | docs/patterns/prisma-client.md |
| Server Action (met auth + Zod) | docs/patterns/server-action.md |
| Route Handler (REST API) | docs/patterns/route-handler.md |
| Zustand optimistische update + rollback | docs/patterns/zustand-optimistic.md |
| Float sort_order drag-and-drop | docs/patterns/sort-order.md |
| Middleware (route protection) | docs/patterns/middleware.md |
Env vars
DATABASE_URL="" # postgresql://... of file:./dev.db
DIRECT_URL="" # alleen bij Neon/cloud
SESSION_SECRET="" # openssl rand -base64 32
Conventies
- Commits:
feat: ST-XXX beschrijving/fix: ST-XXX beschrijving - Branches:
feat/ST-001-scaffolding - Server Actions: altijd in
actions/[domein].ts, nooit inline in page.tsx - Validatie: altijd Zod, nooit handmatige checks
- Eigenaarschap: elke Server Action en Route Handler controleert dat de resource bij de ingelogde gebruiker hoort
- Demo-check: elke Server Action controleert
session.isDemovóór schrijven - Foutberichten: Nederlands voor eindgebruikers — comments in code: Engels
Scrum-terminologie
| Correct | Niet gebruiken |
|---|---|
| Product Backlog Item (PBI) | Feature, Epic, Issue |
| Story | User Story, Ticket |
| Sprint Goal | Sprint Objective |
| Scrum Team | Team |
Definition of Done
- Alle 62 tasks (ST-001 t/m ST-612) afgerond
- Volledige Lars-flow zonder fouten (ST-612)
- Alle 7 API-endpoints werken via curl
- Demo-gebruiker heeft geen schrijfrechten
- App opzetbaar via README zonder extra hulp
- CI/CD actief — falende build blokkeert merge
- Beveiligingsreview API geslaagd (cross-user toegang onmogelijk)