Frontend:
- apps/web (Vite+TS, TanStack Router/Query, shadcn/ui @cfdm/ui base-nova)
- 10 страниц в routes/_auth/, Recharts через shadcn Chart, lucide-react
- формы на RHF + Zod (FormSheet/FormField)
- удалены Tabler, Chart.js, react-router-dom
Backend (параллельный трек):
- apps/api (Fastify 5 + Drizzle + better-sqlite3)
- packages/db: Drizzle-схема и repositories по сущностям
- packages/shared: Zod-контракты
- роуты с валидацией и единым форматом ошибок { error: { code, message } }
- sync/backup — заглушки 501 (billmanager-адаптеры переносятся отдельно)
- legacy Express оставлен как runtime по умолчанию (RUNTIME=express)
Infra:
- Dockerfile multi-stage под pnpm workspaces
- .dockerignore и docker-compose обновлены под monorepo
Rules:
- удалены нерелевантные правила (rust, cloudflare, server/frontend-conventions)
- project-structure.mdc и AGENTS.md переписаны под monorepo
- frontend-shadcn.mdc, shadcn-ui-production.mdc, sqlite.mdc обновлены
Co-authored-by: Cursor <[email protected]>
36 lines
859 B
JSON
36 lines
859 B
JSON
{
|
|
"name": "@cfdm/api",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "tsx watch src/index.ts",
|
|
"dev:legacy": "node index.js",
|
|
"build": "tsc -p tsconfig.json",
|
|
"start": "node dist/index.js",
|
|
"start:legacy": "node index.js",
|
|
"test": "vitest run"
|
|
},
|
|
"dependencies": {
|
|
"@cfdm/db": "workspace:*",
|
|
"@cfdm/shared": "workspace:*",
|
|
"@fastify/cors": "^11.0.1",
|
|
"@fastify/sensible": "^6.0.3",
|
|
"@fastify/static": "^8.2.0",
|
|
"fastify": "^5.6.1",
|
|
"better-sqlite3": "^11.10.0",
|
|
"drizzle-orm": "^0.40.0",
|
|
"express": "^4.21.1",
|
|
"cors": "^2.8.5",
|
|
"sql.js": "^1.14.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22.10.0",
|
|
"@types/express": "^5.0.0",
|
|
"@types/cors": "^2.8.17",
|
|
"tsx": "^4.19.0",
|
|
"typescript": "^5.9.2",
|
|
"vitest": "^3.0.0"
|
|
}
|
|
}
|