{ "name": "xinghen-course-workshop", "private": true, "version": "0.1.0", "type": "module", "scripts": { "dev": "concurrently -n web,server -c blue,cyan \"vite\" \"tsx watch server/index.ts\"", "build": "tsc -b && vite build", "start": "tsx server/index.ts", "check": "tsc -b --pretty false", "db:migrate": "tsx server/migrate.ts" }, "dependencies": { "@fastify/cors": "^10.0.2", "@fastify/multipart": "^9.0.3", "@fastify/static": "^8.1.1", "@types/qrcode": "^1.5.6", "dompurify": "^3.4.15", "fast-xml-parser": "^5.11.1", "fastify": "^5.2.1", "jszip": "^3.10.2", "lucide-react": "^0.468.0", "pdfjs-dist": "^6.3.289", "pg": "^8.13.1", "qrcode": "^1.5.4", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router-dom": "^7.1.1", "sanitize-html": "^2.17.7", "tsx": "^4.19.2", "zod": "^3.24.1" }, "devDependencies": { "@types/node": "^22.10.2", "@types/pg": "^8.11.10", "@types/react": "^19.0.2", "@types/react-dom": "^19.0.2", "@types/sanitize-html": "^2.16.1", "@vitejs/plugin-react": "^4.3.4", "concurrently": "^9.1.2", "typescript": "~5.7.2", "vite": "^6.0.5" } }