From f51937b36aee2a682d3e234cd701f943a0ea69ce Mon Sep 17 00:00:00 2001 From: Madhura68 Date: Sat, 25 Apr 2026 20:09:55 +0200 Subject: [PATCH] docs: markeer ST-506/601/602/603/604/606/609/610/611 als afgerond ST-602 (error.tsx op (app)-niveau), ST-603 (Sonner), ST-604 (DemoTooltip), ST-609 (security tests), ST-610 (CI), ST-611 (README) waren al gereed. Co-Authored-By: Claude Sonnet 4.6 --- docs/scrum4me-backlog.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/scrum4me-backlog.md b/docs/scrum4me-backlog.md index 3cc79c0..9ccee7a 100644 --- a/docs/scrum4me-backlog.md +++ b/docs/scrum4me-backlog.md @@ -296,7 +296,7 @@ De MVP is klaar wanneer Lars — de primaire persona — de volledige cyclus kan - **`updateTodoAction`** toevoegen aan `actions/todos.ts`: valideert eigenaarschap; past `title`, `product_id` en/of `done` aan; `revalidatePath('/todos')` - Done when: aanmaken via kaart persisteert; bewerken van titel, product en done-status werkt; promote vanuit kaart opent juist dialoog en verwijdert todo na bevestiging; kaart leeg bij geen selectie; demo-gebruiker ziet uitgeschakelde kaart -- [ ] **ST-506** Rolbeheer in instellingen +- [x] **ST-506** Rolbeheer in instellingen - `/settings` pagina met roltoewijzing (checkbox per rol: Product Owner, Scrum Master, Developer); minimaal één rol verplicht; `updateRoles` Server Action; geselecteerde rollen zichtbaar in profielbalk - Done when: rollen bijwerken persisterend; profielbalk toont gekozen rollen; uitvinken van alle rollen geeft validatiefout @@ -312,19 +312,19 @@ De MVP is klaar wanneer Lars — de primaire persona — de volledige cyclus kan ### M6: Polish & Launch-ready -- [ ] **ST-601** Loading states en skeletons +- [x] **ST-601** Loading states en skeletons - `loading.tsx` voor alle zware routes (`/products/[id]`, `/sprint`, `/sprint/planning`); skeletoncomponenten voor PBI-lijst, story-blokken en takenlijst; pending states op alle form-submit-knoppen via `useFormStatus` - Done when: navigeren naar een trage route toont skeleton; submit-knoppen disablen tijdens Server Action -- [ ] **ST-602** Error boundaries +- [x] **ST-602** Error boundaries - `error.tsx` voor alle beschermde routes; toon gebruiksvriendelijke foutmelding met "Probeer opnieuw" knop; log fout naar console (Sentry in M6) - Done when: gesimuleerde Server Action-fout toont error boundary zonder witte pagina -- [ ] **ST-603** Toast-notificaties (Sonner) +- [x] **ST-603** Toast-notificaties (Sonner) - Installeer Sonner; success-toast na aanmaken/bewerken/verwijderen van producten, PBI's, stories, taken, todos; error-toast bij mislukte Server Actions; toast niet bij drag-and-drop (te frequent) - Done when: aanmaken van PBI toont success-toast; gesimuleerde netwerk-fout toont error-toast -- [ ] **ST-604** Demo-gebruiker write-protection in UI +- [x] **ST-604** Demo-gebruiker write-protection in UI - Alle aanmaak-, bewerk- en verwijderknoppen disabled + tooltip "Niet beschikbaar in demo-modus" voor demo-sessies; gebaseerd op `isDemo` in sessie - Done when: demo-gebruiker ziet alle knoppen maar kan niets wijzigen; tooltip zichtbaar bij hover @@ -332,7 +332,7 @@ De MVP is klaar wanneer Lars — de primaire persona — de volledige cyclus kan - Tab-volgorde logisch in alle formulieren; Enter submits formulieren; Escape sluit modals/slide-overs; dnd-kit keyboard-drag (Space om te pakken, pijltjestoetsen, Space om te laten vallen) - Done when: volledige PBI aanmaken-flow keyboard-only uitvoerbaar; dnd-kit drag via keyboard werkt -- [ ] **ST-606** Desktop-first UI-review +- [x] **ST-606** Desktop-first UI-review - Test alle flows op 1280px, 1440px en 1920px breedte; fix overflow, uitlijning en proportie-issues; controleer minimum schermbreedte 1024px (toon melding bij smaller) - Done when: alle M0–M5 flows correct op drie schermbreedtes; melding bij < 1024px @@ -344,15 +344,15 @@ De MVP is klaar wanneer Lars — de primaire persona — de volledige cyclus kan - Max. 10 inlogpogingen per IP per minuut; max. 5 registraties per IP per uur; implementeer via in-memory counter (v1) of Vercel Edge middleware - Done when: 11 snelle inlogpogingen leiden tot 429-respons met duidelijke melding -- [ ] **ST-609** Beveiligingsreview API-endpoints +- [x] **ST-609** Beveiligingsreview API-endpoints - Controleer alle Route Handlers: elke schrijfoperatie valideert dat de resource binnen de toegankelijke product-scope valt; cross-scope reads zijn onmogelijk tenzij de gebruiker via `product_members` gekoppeld is; voeg integratietests toe die cross-user toegang testen - Done when: poging om een niet-gedeeld product van een andere gebruiker op te halen via API geeft 403 of 404; gedeelde producten zijn wel zichtbaar; getest met twee test-gebruikers -- [ ] **ST-610** CI/CD via GitHub Actions +- [x] **ST-610** CI/CD via GitHub Actions - Workflow: `lint` (ESLint), `typecheck` (tsc --noEmit), `prisma validate`, `build` (next build) op elke PR en push naar main; Vercel auto-deploy op main - Done when: een TypeScript-fout in een PR blokkeert merge; succesvolle merge triggert Vercel-deploy -- [ ] **ST-611** README en lokale setup-documentatie +- [x] **ST-611** README en lokale setup-documentatie - Schrijf `README.md` met: wat is Scrum4Me, quickstart lokaal (clone → env → prisma push → seed → dev), cloud deployment (Vercel + Neon stappenplan), API-documentatie (alle 7 endpoints met voorbeelden), Claude Code-integratie uitleg, Vercel Analytics status en directe dependencies zoals Sharp - De in-app landingspagina (`/`) bevat al een gebruikershandleiding, Scrum-samenvatting en API-overzicht — de README richt zich op lokale setup en deployment - Done when: iemand zonder context de app lokaal kan draaien op basis van alleen de README en `.env.example`