Files
tony 89b24d4c34 feat: wire build/test infra, trips API, and enriched journey stops
- Add tsconfig.json (server) + client/tsconfig.{json,app.json,node.json}
  so typecheck and tsc -b actually work.
- Fix npm test to run Playwright (was running vitest on Playwright specs);
  typecheck now covers both server and client.
- Mount routes before app.listen, add error handler, mount optional
  @tonycodes/auth-express middleware when AUTH_SECRET is set.
- Add /api/trips (GET/POST/PATCH/DELETE) backed by an in-memory store
  that gracefully degrades when DATABASE_URL is unset.
- Add prisma/seed.ts skeleton and server/types/express.d.ts for req.auth.
- Rewrite Grok prompt for combo-aware planning: charge+eat,
  stay+destination-charging, eat+viewpoint, etc., with amenities,
  cuisine, priceLevel, duration, day titles and trip highlights.
- Extend Stop schema + normalization to preserve all enrichment fields.
- New StopCard component renders combo pill, description, meta row
  (charge / stop / battery / cuisine / £-level) and amenity icons;
  map popups show the same enriched detail; timeline gains day titles
  and a HIGHLIGHTS sidebar.
- Fix server TS errors (vehicle accepted as string | {name,rangeKm},
  JSON parse results typed).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 10:32:53 +01:00

60 lines
1.8 KiB
JSON

{
"name": "tesla-roadtrip",
"version": "0.1.0",
"description": "AI-powered conversational road trip planner for Tesla owners. Chat with Grok on the left, live interactive map + itinerary on the right.",
"private": true,
"type": "module",
"scripts": {
"dev": "concurrently -n \"BACKEND,FRONTEND\" -c \"cyan,green\" \"npm:dev:server\" \"npm:dev:client\"",
"dev:server": "tsx watch server/index.ts",
"dev:client": "npm --prefix client run dev",
"build": "npm --prefix client run build && tsc -p tsconfig.json",
"start": "node dist/server/index.js",
"test": "playwright test",
"test:e2e": "playwright test",
"test:e2e:headed": "HEADED=1 playwright test --headed",
"typecheck": "tsc --noEmit && npm --prefix client run typecheck",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"db:generate": "prisma generate",
"db:migrate": "atlas migrate apply --env dev",
"db:seed": "tsx prisma/seed.ts",
"prepare": "husky || true"
},
"dependencies": {
"@prisma/client": "^7.4.0",
"@tonycodes/auth-express": "^1.4.0",
"cookie-parser": "^1.4.6",
"cors": "^2.8.5",
"dotenv": "^16.3.1",
"express": "^5.0.1",
"helmet": "^7.1.0",
"pino": "^10.3.1",
"pino-pretty": "^13.1.3",
"zod": "^3.22.4"
},
"devDependencies": {
"@playwright/test": "^1.60.0",
"@types/cookie-parser": "^1.4.6",
"@types/cors": "^2.8.17",
"@types/express": "^5.0.0",
"@types/node": "^20.10.0",
"@vitest/coverage-v8": "^1.6.0",
"concurrently": "^8.2.2",
"eslint": "^9.0.0",
"husky": "^9.0.0",
"lint-staged": "^15.0.0",
"prettier": "^3.2.0",
"prisma": "^7.4.0",
"tsx": "^4.6.2",
"typescript": "^5.3.2",
"vitest": "^1.6.0"
},
"lint-staged": {
"*.{ts,tsx}": [
"prettier --write",
"eslint --fix"
]
}
}