A real-time e-commerce system used to evaluate test automation skills. Do not modify anything in apps/.
Two web apps share a single backend. When a staff member updates a product's stock in the Inventory Manager, the Storefront reflects the change live — no page refresh required.
| App | URL | Purpose |
|---|---|---|
| Backend Server | :3001 | REST API + WebSocket event broadcaster |
| Inventory Manager | :5174 | Internal tool for updating stock levels |
| Storefront | :5173 | Customer-facing catalog with live availability badges |
Inventory Manager (:5174) → POST /products/:id/stock → Server (:3001)
↓
WebSocket: stock-update event
↓
Storefront (:5173)
See docs/products.md and docs/glossary.md for more detail.
Install dependencies for all apps and test suites:
cd apps/server && npm install && cd ../..
cd apps/storefront && npm install && cd ../..
cd apps/inventory && npm install && cd ../..
cd tests/inventory && npm install && npx playwright install chromium --with-deps && cd ../..
cd tests/web && npm install && npx playwright install chromium --with-deps && cd ../..If ports are already in use from a previous session, clear them first:
lsof -ti:3001,5173,5174 | xargs kill -9 2>/dev/null; echo "ports clear"Open three terminal tabs and run one command in each:
# Terminal 1
cd apps/server && npm start
# Terminal 2
cd apps/storefront && npm run dev
# Terminal 3
cd apps/inventory && npm run devWith all three services running, open two more terminals:
# Terminal 4
cd tests/inventory && npx playwright test
# Terminal 5
cd tests/web && npx playwright test