# DAN Logistics — build instructions

## What this is
Recreate the design package in `design/design_handoff_dan_logistics/` as a
production app. Read these first, in order:
1. `design/design_handoff_dan_logistics/CLAUDE.md` — handoff rules.
2. `design/design_handoff_dan_logistics/README.md` — the CONTRACT (all 4 roles,
   screens, order lifecycle, tokens, endpoints, scope).
3. `design/design_handoff_dan_logistics/styles.css` — design tokens.
The ".jsx"/".css"/".html" files are visual ground truth. Do NOT ship them — rebuild in our stack.

## Stack (already decided — do not re-pick)
- web/ : React 18 + Vite + Tailwind (static SPA)
- api/ : Express + MySQL (entry: api/server.js)
- Express serves web/dist statically AND exposes /api/* in one app.

## Hard constraints
- Dev ports: web = 3100, api = 3101. Port 3000 is used by another project — never use it.
- Live/ops views use HTTP polling (5–10s), NOT WebSockets (shared-host limit).
- M-Pesa Daraja: STK push + callback endpoints live in api/. Callbacks need public HTTPS.
- Rider mobile bundle < 500KB — code-split rider routes.
- Match the prototype pixel-perfect using tokens from styles.css.

## Rules
- When the prototype and README disagree, flag it — don't guess.
- Don't build anything under "Out of scope for v1".
- Recreate everything under "Known intentional stubs" for real.
