Initialize backendized SurClaw report system

- Add React/Vite frontend for login, dashboard, reports, templates, users, settings, AI, speech, and media workflows.

- Add NestJS/Prisma/PostgreSQL backend with auth, dashboard stats, reports, templates, users, departments, settings, files, AI, speech, audit logs, and HTML sanitization.

- Add Prisma schema, migrations, seed data, persistent app sessions, Docker/Nginx deployment files, and upload volume configuration.

- Add Vitest, Playwright, backend integration tests, and project documentation for requirements, design, permissions, API contracts, testing, deployment, security, and progress.

- Configure production local fallback switch and remove unused Gemini direct dependency/env wiring.
This commit is contained in:
2026-05-02 01:37:20 +08:00
commit 014aca8619
162 changed files with 27116 additions and 0 deletions

71
package.json Normal file
View File

@@ -0,0 +1,71 @@
{
"name": "react-example",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --port=3001 --host=0.0.0.0",
"server:dev": "tsx watch server/src/main.ts",
"server:build": "tsc -p server/tsconfig.json",
"server:start": "node server/dist/main.js",
"build": "vite build",
"preview": "vite preview",
"clean": "rm -rf dist",
"lint": "tsc --noEmit",
"test": "vitest run",
"test:e2e": "playwright test",
"prisma:generate": "prisma generate --schema server/prisma/schema.prisma",
"prisma:migrate": "prisma migrate dev --schema server/prisma/schema.prisma",
"prisma:seed": "prisma db seed --schema server/prisma/schema.prisma"
},
"dependencies": {
"@nestjs/common": "^11.1.19",
"@nestjs/config": "^4.0.4",
"@nestjs/core": "^11.1.19",
"@nestjs/platform-express": "^11.1.19",
"@prisma/adapter-pg": "^7.8.0",
"@prisma/client": "^7.8.0",
"@tailwindcss/vite": "^4.1.14",
"@vitejs/plugin-react": "^5.0.4",
"argon2": "^0.44.0",
"cookie-parser": "^1.4.7",
"diff": "^9.0.0",
"express": "^4.21.2",
"express-session": "^1.19.0",
"lucide-react": "^0.546.0",
"motion": "^12.23.24",
"pg": "^8.20.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router-dom": "^7.14.1",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.2",
"sanitize-html": "^2.17.3",
"vite": "^6.2.0",
"ws": "^8.20.0",
"zod": "^4.4.1"
},
"devDependencies": {
"@nestjs/testing": "^11.1.19",
"@playwright/test": "^1.59.1",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@types/cookie-parser": "^1.4.10",
"@types/express": "^4.17.21",
"@types/express-session": "^1.19.0",
"@types/node": "^22.14.0",
"@types/pg": "^8.20.0",
"@types/sanitize-html": "^2.16.1",
"@types/supertest": "^7.2.0",
"@types/ws": "^8.18.1",
"autoprefixer": "^10.4.21",
"jsdom": "^29.1.1",
"prisma": "^7.8.0",
"supertest": "^7.2.2",
"tailwindcss": "^4.1.14",
"tsx": "^4.21.0",
"typescript": "~5.8.2",
"vite": "^6.2.0",
"vitest": "^4.1.5"
}
}