Files
stack/apps/web/package.json
Jason Woltje 0b1b587c3c
Some checks failed
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/web Pipeline failed
ci/woodpecker/push/api Pipeline was successful
feat(web): add kanban board page with drag-and-drop
- Add kanban board page at /kanban with 5 status columns
  (To Do, In Progress, Paused, Done, Archived)
- Use @hello-pangea/dnd for drag-and-drop between columns
- Optimistic status update on drop with API revert on failure
- Add updateTask() to tasks API client
- Task cards show title, priority badge, and truncated description
- Column headers with colored accent borders and task count badges
- Responsive: horizontal scroll with min-width 280px per column
- Loading (MosaicSpinner), error, and empty states
- All design tokens from CSS custom properties

Refs #468

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 22:25:14 -06:00

59 lines
1.7 KiB
JSON

{
"name": "@mosaic/web",
"version": "0.0.1",
"private": true,
"scripts": {
"build": "next build",
"dev": "next dev --turbopack --port 3000",
"start": "next start",
"lint": "eslint \"src/**/*.{ts,tsx}\"",
"lint:fix": "eslint \"src/**/*.{ts,tsx}\" --fix",
"typecheck": "tsc --noEmit",
"clean": "rm -rf .next",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage"
},
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^9.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@hello-pangea/dnd": "^18.0.1",
"@mosaic/shared": "workspace:*",
"@mosaic/ui": "workspace:*",
"@tanstack/react-query": "^5.90.20",
"@types/dompurify": "^3.2.0",
"@xyflow/react": "^12.5.3",
"better-auth": "^1.4.17",
"date-fns": "^4.1.0",
"dompurify": "^3.3.1",
"elkjs": "^0.9.3",
"lucide-react": "^0.563.0",
"mermaid": "^11.4.1",
"next": "^16.1.6",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-grid-layout": "^2.2.2",
"recharts": "^3.7.0",
"socket.io-client": "^4.8.3"
},
"devDependencies": {
"@mosaic/config": "workspace:*",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.2.0",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^22.13.4",
"@types/react": "^19.0.8",
"@types/react-dom": "^19.0.3",
"@types/react-grid-layout": "^2.1.0",
"@vitejs/plugin-react": "^4.3.4",
"@vitest/coverage-v8": "^3.2.4",
"autoprefixer": "^10.4.24",
"jsdom": "^26.0.0",
"postcss": "^8.5.6",
"tailwindcss": "^3.4.19",
"typescript": "^5.8.2",
"vitest": "^3.0.8"
}
}