1 {
2 "name": "jcr-guide-pro",
3 "private": true,
4 "version": "1.0.0",
5 "type": "module",
6 "scripts": {
7 "dev": "tsx server/index.ts",
8 "build": "vite build && esbuild server/index.ts --bundle --platform=node --format=cjs --packages=external --sourcemap --outfile=dist/server.cjs",
9 "start": "node dist/server.cjs",
10 "preview": "vite preview",
11 "clean": "rm -rf dist server.js",
12 "lint": "tsc --noEmit"
13 },
14 "dependencies": {
15 "@google/genai": "^2.4.0",
16 "@hookform/resolvers": "^5.9.0",
17 "@neondatabase/serverless": "^1.1.0",
18 "@radix-ui/react-accordion": "^1.2.20",
19 "@radix-ui/react-alert-dialog": "^1.1.23",
20 "@radix-ui/react-aspect-ratio": "^1.1.15",
21 "@radix-ui/react-avatar": "^1.2.6",
22 "@radix-ui/react-checkbox": "^1.3.11",
23 "@radix-ui/react-collapsible": "^1.1.20",
24 "@radix-ui/react-context-menu": "^2.3.7",
25 "@radix-ui/react-dialog": "^1.1.23",
26 "@radix-ui/react-dropdown-menu": "^2.1.24",
27 "@radix-ui/react-hover-card": "^1.1.23",
28 "@radix-ui/react-label": "^2.1.15",
29 "@radix-ui/react-menubar": "^1.1.24",
30 "@radix-ui/react-navigation-menu": "^1.2.22",
31 "@radix-ui/react-popover": "^1.1.23",
32 "@radix-ui/react-progress": "^1.1.16",
33 "@radix-ui/react-radio-group": "^1.4.7",
34 "@radix-ui/react-scroll-area": "^1.2.18",
35 "@radix-ui/react-select": "^2.3.7",
36 "@radix-ui/react-separator": "^1.1.15",
37 "@radix-ui/react-slider": "^1.4.7",
38 "@radix-ui/react-slot": "^1.3.3",
39 "@radix-ui/react-switch": "^1.3.7",
40 "@radix-ui/react-tabs": "^1.1.21",
41 "@radix-ui/react-toast": "^1.2.23",
42 "@radix-ui/react-toggle": "^1.1.18",
43 "@radix-ui/react-toggle-group": "^1.1.19",
44 "@radix-ui/react-tooltip": "^1.2.16",
45 "@tailwindcss/vite": "^4.1.14",
46 "@tanstack/react-query": "^5.101.4",
47 "@vitejs/plugin-react": "^5.0.4",
48 "adm-zip": "^0.6.0",
49 "archiver": "^8.0.0",
50 "bcrypt": "^6.0.0",
51 "class-variance-authority": "^0.7.1",
52 "clsx": "^2.1.1",
53 "cmdk": "^1.1.1",
54 "date-fns": "^4.4.0",
55 "dotenv": "^17.2.3",
56 "drizzle-orm": "^0.45.2",
57 "drizzle-zod": "^0.8.3",
58 "embla-carousel-react": "^8.6.0",
59 "express": "^4.21.2",
60 "express-session": "^1.19.0",
61 "framer-motion": "^13.1.0",
62 "input-otp": "^1.4.2",
63 "lucide-react": "^0.546.0",
64 "memoizee": "^0.4.17",
65 "memorystore": "^1.6.8",
66 "motion": "^12.23.24",
67 "multer": "^2.2.0",
68 "nanoid": "^6.0.1",
69 "next-themes": "^0.4.6",
70 "passport": "^0.7.0",
71 "passport-local": "^1.0.0",
72 "react": "^19.0.1",
73 "react-day-picker": "^10.0.1",
74 "react-dom": "^19.0.1",
75 "react-hook-form": "^7.85.0",
76 "react-icons": "^5.7.0",
77 "react-resizable-panels": "^2.1.7",
78 "recharts": "^3.10.1",
79 "tailwind-merge": "^3.6.0",
80 "vaul": "^1.1.2",
81 "vite": "^6.2.3",
82 "wouter": "^3.10.0",
83 "ws": "^8.21.3",
84 "zod": "^4.4.3",
85 "zod-validation-error": "^5.0.0"
86 },
87 "devDependencies": {
88 "@types/adm-zip": "^0.5.8",
89 "@types/archiver": "^8.0.0",
90 "@types/bcrypt": "^6.0.0",
91 "@types/express": "^4.17.21",
92 "@types/express-session": "^1.19.0",
93 "@types/memoizee": "^0.4.12",
94 "@types/multer": "^2.2.0",
95 "@types/node": "^22.14.0",
96 "@types/passport": "^1.0.17",
97 "@types/passport-local": "^1.0.38",
98 "@types/react": "^19.0.0",
99 "@types/react-dom": "^19.0.0",
100 "@types/ws": "^8.18.1",
101 "autoprefixer": "^10.4.21",
102 "esbuild": "^0.25.0",
103 "tailwindcss": "^4.1.14",
104 "tsx": "^4.21.0",
105 "typescript": "~5.8.2",
106 "vite": "^6.2.3"
107 }
108 }