All checks were successful
Build and Push Docker Image / build (push) Successful in 12m29s
Phase 1: Fix 6 backend data bugs in analytics.ts (roundName filtering, unscored projects, criteria scores, activeRoundCount scoping, email privacy leaks in juror consistency + workload) Phase 2-3: Migrate all 9 chart components from Recharts to Nivo (@nivo/bar, @nivo/line, @nivo/pie, @nivo/scatterplot) with shared brand theme, scoreGradient colors, and STATUS_COLORS map. Fixes scatter plot outlier coloring and pie chart label visibility bugs. Phase 4: Add round-type-aware stats (getRoundTypeStats backend + RoundTypeStatsCards component) showing appropriate metrics per round type (intake/filtering/evaluation/submission/mentoring/live/deliberation). Phase 5: UX improvements — Stage→Round terminology, clickable dashboard round links, URL-based round selection (?round=), round type indicators in selectors, accessible Toggle-based cross-round comparison, sortable project table columns (title/score/evaluations), brand score colors on dashboard bar chart with aria labels. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
130 lines
4.0 KiB
JSON
130 lines
4.0 KiB
JSON
{
|
|
"name": "mopc-platform",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "next dev --turbopack",
|
|
"build": "next build",
|
|
"start": "next start",
|
|
"lint": "next lint",
|
|
"format": "prettier --write .",
|
|
"typecheck": "tsc --noEmit",
|
|
"db:generate": "prisma generate",
|
|
"db:push": "prisma db push",
|
|
"db:migrate": "prisma migrate dev",
|
|
"db:migrate:deploy": "prisma migrate deploy",
|
|
"db:studio": "prisma studio",
|
|
"db:seed": "tsx prisma/seed.ts",
|
|
"db:seed:candidatures": "tsx prisma/seed-candidatures.ts",
|
|
"test": "vitest",
|
|
"test:e2e": "playwright test"
|
|
},
|
|
"dependencies": {
|
|
"@auth/prisma-adapter": "^2.7.4",
|
|
"@blocknote/core": "^0.46.2",
|
|
"@blocknote/mantine": "^0.46.2",
|
|
"@blocknote/react": "^0.46.2",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@hookform/resolvers": "^3.9.1",
|
|
"@mantine/core": "^8.3.13",
|
|
"@mantine/hooks": "^8.3.13",
|
|
"@nivo/bar": "^0.99.0",
|
|
"@nivo/core": "^0.99.0",
|
|
"@nivo/line": "^0.99.0",
|
|
"@nivo/pie": "^0.99.0",
|
|
"@nivo/scatterplot": "^0.99.0",
|
|
"@notionhq/client": "^2.3.0",
|
|
"@prisma/client": "^6.19.2",
|
|
"@radix-ui/react-alert-dialog": "^1.1.4",
|
|
"@radix-ui/react-avatar": "^1.1.2",
|
|
"@radix-ui/react-checkbox": "^1.1.3",
|
|
"@radix-ui/react-collapsible": "^1.1.2",
|
|
"@radix-ui/react-dialog": "^1.1.4",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.4",
|
|
"@radix-ui/react-label": "^2.1.1",
|
|
"@radix-ui/react-popover": "^1.1.4",
|
|
"@radix-ui/react-progress": "^1.1.1",
|
|
"@radix-ui/react-radio-group": "^1.2.2",
|
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
"@radix-ui/react-select": "^2.1.4",
|
|
"@radix-ui/react-separator": "^1.1.1",
|
|
"@radix-ui/react-slider": "^1.2.2",
|
|
"@radix-ui/react-slot": "^1.1.1",
|
|
"@radix-ui/react-switch": "^1.1.2",
|
|
"@radix-ui/react-tabs": "^1.1.2",
|
|
"@radix-ui/react-toggle": "^1.1.10",
|
|
"@radix-ui/react-tooltip": "^1.1.6",
|
|
"@tailwindcss/postcss": "^4.1.18",
|
|
"@tanstack/react-query": "^5.62.0",
|
|
"@trpc/client": "^11.0.0-rc.678",
|
|
"@trpc/react-query": "^11.0.0-rc.678",
|
|
"@trpc/server": "^11.0.0-rc.678",
|
|
"bcryptjs": "^3.0.3",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.0.4",
|
|
"csv-parse": "^6.1.0",
|
|
"date-fns": "^4.1.0",
|
|
"franc": "^6.2.0",
|
|
"html2canvas": "^1.4.1",
|
|
"jspdf": "^4.1.0",
|
|
"jspdf-autotable": "^5.0.7",
|
|
"leaflet": "^1.9.4",
|
|
"lucide-react": "^0.563.0",
|
|
"mammoth": "^1.11.0",
|
|
"minio": "^8.0.2",
|
|
"motion": "^11.15.0",
|
|
"next": "^15.1.0",
|
|
"next-auth": "^5.0.0-beta.25",
|
|
"next-themes": "^0.4.6",
|
|
"nodemailer": "^7.0.7",
|
|
"openai": "^6.16.0",
|
|
"papaparse": "^5.4.1",
|
|
"pdf-parse": "^2.4.5",
|
|
"react": "^19.0.0",
|
|
"react-day-picker": "^9.13.0",
|
|
"react-dom": "^19.0.0",
|
|
"react-easy-crop": "^5.5.6",
|
|
"react-hook-form": "^7.54.2",
|
|
"react-leaflet": "^5.0.0",
|
|
"react-phone-number-input": "^3.4.14",
|
|
"sonner": "^2.0.7",
|
|
"superjson": "^2.2.2",
|
|
"tailwind-merge": "^3.4.0",
|
|
"unpdf": "^1.4.0",
|
|
"use-debounce": "^10.0.4",
|
|
"zod": "^3.24.1"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.49.1",
|
|
"@types/bcryptjs": "^2.4.6",
|
|
"@types/leaflet": "^1.9.21",
|
|
"@types/node": "^25.0.10",
|
|
"@types/nodemailer": "^7.0.9",
|
|
"@types/papaparse": "^5.3.15",
|
|
"@types/pdf-parse": "^1.1.5",
|
|
"@types/react": "^19.0.2",
|
|
"@types/react-dom": "^19.0.2",
|
|
"eslint": "^9.17.0",
|
|
"eslint-config-next": "^15.1.0",
|
|
"postcss": "^8.4.49",
|
|
"prettier": "^3.4.2",
|
|
"prettier-plugin-tailwindcss": "^0.7.2",
|
|
"prisma": "^6.19.2",
|
|
"tailwindcss": "^4.1.18",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"tsx": "^4.19.2",
|
|
"typescript": "^5.7.2",
|
|
"vitest": "^4.0.18"
|
|
},
|
|
"engines": {
|
|
"node": ">=20.0.0"
|
|
},
|
|
"prisma": {
|
|
"seed": "tsx prisma/seed.ts"
|
|
}
|
|
}
|