Project tracking and execution plan lives in PROJECT_STATE.md.
dummyjson.com for products and persists cart / wishlist / orders.server/src/services/dummyjson.js, exposed through GET /api/products/*.server/prisma/schema.prisma.x-user-email (and optional x-user-name). Frontend sends these automatically.GET /api/healthGET /api/products?limit=&skip=&q=GET /api/products/:idGET /api/products/categoriesGET /api/products/category/:categoryGET/POST/PATCH/DELETE /api/cartGET/POST/DELETE /api/wishlistGET/POST /api/ordersIn two terminals:
cd server
npm install
npm run dev
cd client
npm install
npm run dev
Then open the app at http://localhost:5173.
Backend (server/.env):
PORT (default 5001)DATABASE_URL (default file:./dev.db)ALLOWED_ORIGINS (comma-separated)Frontend:
VITE_API_URL (optional). When omitted, Vite dev proxy forwards /api to http://localhost:5001.Backend:
cd server
npm test
Frontend:
cd client
npm run lint
npm test -- --run
npm run build
Bonus E2E (requires Playwright browsers):
cd client
npx playwright install --with-deps chromium
npm run e2e
Backend: deploy to Render (configure env vars + run Prisma migrate if needed)
VITE_API_URL to your Render backend URL)