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 en MCP https://scrum4-me.vercel.app
Find a file
janpeter visser 0bf635eca1 feat: ST-612 drag-and-drop tussen Product Backlog en Sprint Backlog
Vervangt de '+ Sprint' knop door cross-panel drag-and-drop:
- Sleep story van rechts (PB) naar links (SB) om toe te voegen
- Sleep story van links (SB) naar rechts (PB) om te verwijderen
- Gedeelde DndContext in SprintBacklogClient voor beide panelen
- Visuele dropzone-highlight bij hoveren
- Optimistische UI-updates met rollback bij fouten

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 17:00:25 +02:00
.claude fix: lint errors en warnings opgelost voor CI 2026-04-24 14:09:03 +02:00
.github/workflows fix: prisma generate in CI en expliciete types in map/filter callbacks 2026-04-24 14:23:41 +02:00
.husky chore: husky pre-commit hook met lint-staged 2026-04-24 14:14:25 +02:00
.icons feat: ST-201-ST-210 M2 stories, drag-and-drop en Zustand stores 2026-04-24 11:46:18 +02:00
__tests__ feat: ST-601-ST-612 M6 polish, beveiliging en launch-ready 2026-04-24 12:36:23 +02:00
actions fix: typecheck errors voor Vercel build 2026-04-24 13:44:33 +02:00
app fix: function props vanuit server component verplaatst naar client wrapper 2026-04-24 16:51:11 +02:00
components feat: ST-612 drag-and-drop tussen Product Backlog en Sprint Backlog 2026-04-24 17:00:25 +02:00
lib fix: vervang require() imports door ES imports in lib/prisma.ts 2026-04-24 14:03:12 +02:00
prisma fix: SQLite migraties vervangen door PostgreSQL migratie voor Neon 2026-04-24 14:38:01 +02:00
public feat: ST-101-ST-110 M1 producten, PBI backlog, iconen en PWA manifest 2026-04-24 11:33:47 +02:00
stores feat: ST-301-ST-312 M3 Sprint Backlog en Sprint Planning 2026-04-24 11:51:27 +02:00
.gitignore chore: .claude/settings.local.json toevoegen aan .gitignore 2026-04-24 14:16:34 +02:00
AGENTS.md Initial commit from Create Next App 2026-04-22 20:25:19 +02:00
CLAUDE.md feat: ST-201-ST-210 M2 stories, drag-and-drop en Zustand stores 2026-04-24 11:46:18 +02:00
components.json feat: ST-001–ST-005 foundation — scaffolding, Prisma, schema, seed, env 2026-04-22 21:04:48 +02:00
eslint.config.mjs fix: lint errors en warnings opgelost voor CI 2026-04-24 14:09:03 +02:00
MD3_Color_Scheme_Documentation.md feat: MD3 design system + spec-documenten toegevoegd aan repo 2026-04-24 11:01:00 +02:00
middleware.ts feat: ST-006-ST-008 auth pages, middleware, nav shell en dashboard 2026-04-24 11:18:42 +02:00
next.config.ts Initial commit from Create Next App 2026-04-22 20:25:19 +02:00
package-lock.json chore: husky pre-commit hook met lint-staged 2026-04-24 14:14:25 +02:00
package.json chore: postinstall script voor automatische prisma generate 2026-04-24 14:48:56 +02:00
postcss.config.mjs Initial commit from Create Next App 2026-04-22 20:25:19 +02:00
prisma.config.ts fix: url en directUrl uit schema.prisma verplaatst naar prisma.config.ts (Prisma v7) 2026-04-24 14:26:44 +02:00
README.md fix: ST-611 README bijgewerkt naar Neon-only setup 2026-04-24 16:32:57 +02:00
scrum4me-architecture.md feat: MD3 design system + spec-documenten toegevoegd aan repo 2026-04-24 11:01:00 +02:00
scrum4me-backlog.md feat: MD3 design system + spec-documenten toegevoegd aan repo 2026-04-24 11:01:00 +02:00
scrum4me-functional-spec.md feat: MD3 design system + spec-documenten toegevoegd aan repo 2026-04-24 11:01:00 +02:00
scrum4me-personas.md feat: MD3 design system + spec-documenten toegevoegd aan repo 2026-04-24 11:01:00 +02:00
scrum4me-product-backlog.md feat: MD3 design system + spec-documenten toegevoegd aan repo 2026-04-24 11:01:00 +02:00
scrum4me-styling.md feat: MD3 design system + spec-documenten toegevoegd aan repo 2026-04-24 11:01:00 +02:00
Srum4MeIcons.html feat: ST-201-ST-210 M2 stories, drag-and-drop en Zustand stores 2026-04-24 11:46:18 +02:00
theme.css feat: MD3 design system + spec-documenten toegevoegd aan repo 2026-04-24 11:01:00 +02:00
tsconfig.json Initial commit from Create Next App 2026-04-22 20:25:19 +02:00
vitest.config.ts feat: ST-601-ST-612 M6 polish, beveiliging en launch-ready 2026-04-24 12:36:23 +02:00

Scrum4Me

Lichtgewicht Scrum-planner voor solo developers en kleine teams die meerdere softwareprojecten parallel beheren.

Functies:

  • Hiërarchisch werkbeheer: Product → PBI → Story → Taak
  • Gesplitste planningsschermen met drag-and-drop
  • Sprint backlog en planning
  • REST API voor integratie met Claude Code
  • Demo-modus (alleen lezen)

Lokale quickstart

Vereisten

  • Node.js 20+
  • npm
  • Een Neon PostgreSQL database (neon.tech — gratis tier volstaat)

Stappen

# 1. Clone de repository
git clone <repo-url>
cd scrum4me

# 2. Installeer dependencies
npm install

# 3. Configureer omgevingsvariabelen
cp .env.example .env.local
# Vul de volgende waarden in .env.local:
#   DATABASE_URL  — Neon pooled connection string
#   DIRECT_URL    — Neon direct connection string
#   SESSION_SECRET — genereer met: openssl rand -base64 32

# 4. Database schema aanmaken en migraties uitvoeren
npx prisma migrate deploy

# 5. Testdata inladen
npx prisma db seed

# 6. Start de ontwikkelserver
npm run dev

Open http://localhost:3000.

Demo-account: gebruikersnaam demo / wachtwoord demo1234 (alleen lezen)


Omgevingsvariabelen

Variabele Beschrijving
DATABASE_URL Neon pooled connection string
DIRECT_URL Neon direct connection string (voor migraties)
SESSION_SECRET Minimaal 32 tekens — genereer met openssl rand -base64 32

Cloud deployment (Vercel + Neon)

1. Database aanmaken op Neon

  1. Maak een account op neon.tech
  2. Maak een nieuw project en database
  3. Kopieer de connection strings:
    • DATABASE_URL: de pooled connection string
    • DIRECT_URL: de directe (niet-gepoolde) connection string

2. Deployen op Vercel

  1. Push de code naar GitHub
  2. Importeer het project in vercel.com
  3. Voeg de volgende environment variables toe in Vercel:
    • DATABASE_URL (Neon pooled URL)
    • DIRECT_URL (Neon direct URL)
    • SESSION_SECRET (random string >= 32 tekens)
  4. Deploy

3. Database migraties uitvoeren

# Eenmalig na deploy:
npx prisma migrate deploy
npx prisma db seed

REST API

Alle endpoints vereisen Authorization: Bearer <token>. Maak een token aan via Instellingen -> API Tokens in de app.

Endpoints

GET /api/products

Haal alle actieve producten op.

curl -H "Authorization: Bearer <token>" \
  https://your-app.vercel.app/api/products

Response:

[
  { "id": "clx...", "name": "Mijn Product", "repo_url": "https://github.com/..." }
]

GET /api/products/:id/next-story

Haal de hoogst geprioriteerde open story uit de actieve sprint op.

curl -H "Authorization: Bearer <token>" \
  https://your-app.vercel.app/api/products/<product-id>/next-story

Response: story-object inclusief taken.


GET /api/sprints/:id/tasks?limit=10

Haal de eerste N taken uit de sprint op (standaard 10, max 50).

curl -H "Authorization: Bearer <token>" \
  "https://your-app.vercel.app/api/sprints/<sprint-id>/tasks?limit=5"

POST /api/stories/:id/log

Voeg een logvermelding toe aan een story.

# Implementatieplan:
curl -X POST -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"type":"IMPLEMENTATION_PLAN","content":"Aanpak: ..."}' \
  https://your-app.vercel.app/api/stories/<story-id>/log

# Testresultaat:
curl -X POST -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"type":"TEST_RESULT","content":"Alle tests geslaagd","status":"PASSED"}' \
  https://your-app.vercel.app/api/stories/<story-id>/log

# Commit:
curl -X POST -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"type":"COMMIT","content":"feat: ST-001","commit_hash":"abc123","commit_message":"feat: ST-001 scaffolding"}' \
  https://your-app.vercel.app/api/stories/<story-id>/log

PATCH /api/stories/:id/tasks/reorder

Pas de taakvolgorde aan binnen een story.

curl -X PATCH -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"task_ids":["id-1","id-2","id-3"]}' \
  https://your-app.vercel.app/api/stories/<story-id>/tasks/reorder

PATCH /api/tasks/:id

Werk de status van een taak bij.

curl -X PATCH -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"status":"IN_PROGRESS"}' \
  https://your-app.vercel.app/api/tasks/<task-id>

Status waarden: TO_DO - IN_PROGRESS - DONE


POST /api/todos

Maak een todo aan.

curl -X POST -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"title":"Mijn nieuwe todo"}' \
  https://your-app.vercel.app/api/todos

Claude Code integratie

Scrum4Me integreert met Claude Code via de REST API.

  1. Maak een API token aan via Instellingen -> API Tokens
  2. Gebruik de API om implementatieplannen, testresultaten en commits automatisch te loggen in stories

Scripts

Script Beschrijving
npm run dev Lokale ontwikkelserver
npm run build Productie-build
npm run lint ESLint
npm test Beveiligingstests uitvoeren
npx tsc --noEmit TypeScript-check
npx prisma migrate deploy Migraties uitvoeren
npx prisma db seed Testdata inladen

Tech stack

  • Next.js 15 (App Router) + React 19
  • TypeScript strict
  • Tailwind CSS + shadcn/ui (Base UI)
  • Zustand (client state)
  • dnd-kit (drag-and-drop)
  • Prisma v7 (ORM)
  • PostgreSQL via Neon (zowel lokaal als productie)
  • iron-session (auth)
  • Sonner (toasts)
  • Zod (validatie)