- docker-compose.dev.yml: backend on 8000, frontend (Vite) on 5173 - Backend mounts source files + uvicorn --reload for hot reload - Frontend uses node:20-alpine, mounts ./frontend, runs npm run dev --host - vite.config.ts: proxy target reads from API_TARGET env var (defaults to localhost:8000 for plain npm run dev, set to http://backend:8000 by docker-compose.dev.yml) Usage: docker compose -f docker-compose.dev.yml up Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>