{ "name": "@linsa/web", "version": "0.0.0", "private": true, "type": "module", "scripts": { "dev": "vite dev --port 5625 --strictPort", "build": "vite build", "serve": "vite preview", "test": "vitest run", "deploy": "npm run build && wrangler deploy", "preview": "npm run build && vite preview", "cf-typegen": "wrangler types", "lint": "eslint src", "lint:fix": "eslint src --fix", "seed": "tsx scripts/seed.ts", "migrate": "drizzle-kit migrate", "migrate:generate": "drizzle-kit generate" }, "dependencies": { "@ai-sdk/openai": "^2.0.79", "@ai-sdk/react": "^2.0.109", "@cloudflare/stream-react": "^1.9.3", "@cloudflare/vite-plugin": "^1.17.0", "@electric-sql/client": "^1.2.0", "@flowglad/react": "0.15.0", "@flowglad/server": "0.15.0", "@openrouter/ai-sdk-provider": "^1.4.1", "@tailwindcss/vite": "^4.1.17", "@tanstack/electric-db-collection": "^0.2.12", "@tanstack/react-db": "^0.1.55", "@tanstack/react-devtools": "^0.8.2", "@tanstack/react-router": "^1.140.0", "@tanstack/react-router-devtools": "^1.140.0", "@tanstack/react-router-ssr-query": "^1.140.0", "@tanstack/react-start": "^1.140.0", "@tanstack/router-plugin": "^1.140.0", "ai": "^5.0.108", "better-auth": "^1.4.5", "drizzle-orm": "^0.45.0", "drizzle-zod": "^0.8.3", "framer-motion": "^12.23.25", "hls.js": "^1.6.15", "jazz-react": "^0.14.28", "jazz-tools": "^0.19.13", "lucide-react": "^0.556.0", "postgres": "^3.4.7", "react": "^19.2.1", "react-dom": "^19.2.1", "react-markdown": "^10.1.0", "remark-gfm": "^4.0.1", "resend": "^6.5.2", "stripe": "^20.1.0", "tailwindcss": "^4.1.17", "vite-tsconfig-paths": "^5.1.4", "zod": "^4.1.13" }, "devDependencies": { "@nikiv/ts-utils": "^0.1.7", "@testing-library/dom": "^10.4.1", "@testing-library/react": "^16.3.0", "@types/node": "^24.10.1", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", "dotenv": "^17.2.3", "drizzle-kit": "^0.31.8", "jsdom": "^27.2.0", "tsx": "^4.21.0", "typescript": "^5.9.3", "vite": "^7.2.6", "vitest": "^4.0.15", "web-vitals": "^5.1.0", "wrangler": "^4.53.0" } }