{ "name": "gearbox", "module": "index.ts", "type": "module", "private": true, "scripts": { "dev": "concurrently -k -c \"blue,green\" -n \"server,client\" \"bun run dev:server\" \"bun run dev:client\"", "dev:client": "vite", "dev:server": "bun --hot src/server/index.ts", "build": "vite build", "db:generate": "bunx drizzle-kit generate", "db:push": "bunx drizzle-kit push", "test": "bun test tests/", "test:e2e": "bunx playwright test", "test:e2e:ui": "bunx playwright test --ui", "lint": "bunx @biomejs/biome check .", "db:seed:dev": "bun run src/db/dev-seed.ts", "backfill:colors": "bun run scripts/backfill-dominant-colors.ts", "db:crawl": "bun run scripts/crawl-manufacturer.ts", "db:crawl-all": "bun run scripts/crawl-all.ts" }, "devDependencies": { "@biomejs/biome": "^2.4.7", "@electric-sql/pglite": "^0.4.3", "@playwright/test": "^1.59.1", "@tanstack/react-query-devtools": "^5.91.3", "@tanstack/react-router-devtools": "^1.166.7", "@tanstack/router-plugin": "^1.166.9", "@types/bun": "latest", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", "concurrently": "^9.1.2", "drizzle-kit": "^0.31.9", "vite": "^8.0.0" }, "peerDependencies": { "typescript": "^5.9.3" }, "dependencies": { "@anthropic-ai/sdk": "^0.90.0", "@aws-sdk/client-s3": "^3.1024.0", "@aws-sdk/s3-request-presigner": "^3.1024.0", "@hono/oidc-auth": "^1.8.1", "@hono/zod-validator": "^0.7.6", "@modelcontextprotocol/sdk": "^1.29.0", "@tailwindcss/vite": "^4.2.1", "@tanstack/react-query": "^5.90.21", "@tanstack/react-router": "^1.167.0", "clsx": "^2.1.1", "drizzle-orm": "^0.45.1", "framer-motion": "^12.38.0", "hono": "^4.12.8", "i18next": "^26.0.4", "i18next-browser-languagedetector": "^8.2.1", "lucide-react": "^0.577.0", "postgres": "^3.4.9", "react": "^19.2.4", "react-dom": "^19.2.4", "react-easy-crop": "^5.5.7", "react-i18next": "^17.0.2", "recharts": "^3.8.0", "sharp": "^0.34.5", "sonner": "^2.0.7", "tailwindcss": "^4.2.1", "zod": "^4.3.6", "zustand": "^5.0.11" } }