{ "name": "gpi-app", "version": "1.0.0", "private": true, "type": "module", "engines": { "node": ">=22.12.0" }, "scripts": { "dev": "concurrently \"vite\" \"tsx watch src/server/index.ts\"", "build:client": "vite build", "build:server": "tsc -p tsconfig.server.json", "prebuild": "npm install", "prebuild": "npm ci", "build": "npm run build:client && npm run build:server", "lint": "eslint .", "preview": "vite preview", "start": "node dist/server/index.js" }, "dependencies": { "tsx": "^4.21.0", "@clerk/clerk-react": "^5.61.4", "@logto/node": "^2.4.0", "@supabase/supabase-js": "^2.47.0", "@tailwindcss/postcss": "^4.1.18", "@types/uuid": "^10.0.0", "@vercel/speed-insights": "^1.3.1", "axios": "^1.13.2", "clsx": "^2.1.1", "cors": "^2.8.5", "date-fns": "^4.1.0", "dequal": "^2.0.3", "dotenv": "^17.2.3", "enhanced-resolve": "^5.18.4", "express": "^5.2.1", "jose": "^5.2.0", "lucide-react": "^0.562.0", "mongodb": "^7.1.1", "multer": "^2.0.2", "pdf-parse": "^1.1.1", "prop-types": "^15.8.1", "react": "^19.2.0", "react-dom": "^19.2.0", "react-is": "^19.2.3", "react-router-dom": "^7.12.0", "recharts": "^3.7.0", "search-web": "^1.0.3", "serverless-http": "^4.0.0", "tailwind-merge": "^3.4.0", "tesseract.js": "^7.0.0", "uuid": "^13.0.0" }, "devDependencies": { "@eslint/js": "^9.39.1", "@types/cors": "^2.8.19", "@types/express": "^5.0.0", "@types/multer": "^2.0.0", "@types/node": "^24.10.1", "@types/react": "^19.2.5", "@types/react-dom": "^19.2.3", "@vercel/node": "^5.5.28", "@vitejs/plugin-react": "^4.3.0", "autoprefixer": "^10.4.23", "concurrently": "^9.1.2", "eslint": "^9.39.1", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", "mongoose": "^8.23.0", "nodemon": "^3.1.11", "postcss": "^8.5.6", "tailwindcss": "^4.1.18", "ts-node": "^10.9.2", "tsx": "^4.21.0", "typescript": "~5.9.3", "typescript-eslint": "^8.46.4", "vite": "^6.0.0", "vite-plugin-pwa": "^1.2.0" } }