# Frontend — PROGRESS (Phase 1: Inventory & Supply Chain) Legend: `[ ]` not started · `[~]` in progress · `[x]` done Spec: `docs/20-FRONTEND.md` (flows + rules) · `docs/11-BACKEND-PHASE1.md` (API contract) Convention: `docs/01-DOC-GUIDE.md §6`. Update this file in the **same commit** as the code. When ticking `[x]`, append a short note + any deviation. ## 0. Foundation - [ ] `NEXT_PUBLIC_API_BASE_URL` wired (`.env.local`) - [ ] Typed API client / fetch wrapper (one method per endpoint) + bearer token handling - [ ] Shared TS types mirroring API DTOs (`types/`) - [ ] Dependency-free client validation helpers (format/required/range) - [ ] `ProblemDetails` normalizer + `code → message` map (`lib/`) ## 1. Auth - [ ] Login screen → `POST /auth/login`; store token; attach to client ## 2. Master Data screens - [ ] Items (list + create/edit, ETag handling) - [ ] UOM + conversions - [ ] Categories (tree) - [ ] Vendors - [ ] Warehouses + Bins - [ ] Item reorder settings ## 3. Procurement screens - [ ] Requisition (create + submit) - [ ] RFQ + quotations + comparison view - [ ] Purchase Order (create, edit-while-open, cancel) - [ ] Purchase Return ## 4. Receiving screens - [ ] GRN create (qty, bin, batch/serial capture) - [ ] GRN confirm (render created layers / ledger refs) - [ ] Inspection hold release / reject ## 5. Stock screens - [ ] Stock enquiry (onHand/available/onHold/inTransit) - [ ] Ledger view · Valuation view - [ ] Transfer (create → dispatch → receive) - [ ] Adjustment (reason code required) - [ ] Count (cycle/full → enter → post) - [ ] Reorder alerts (+ create requisition) ## 6. Validation posture (20-FRONTEND §3) - [ ] Client format/required/range checks on all forms - [ ] Surface server `ProblemDetails` incl. domain codes; map to fields/messages - [ ] `412` conflict → prompt refetch before retry - [ ] No client-side gating on stock/availability/status (server-authoritative) ## 7. UX states - [ ] Loading / empty / error states on every list - [ ] Transactional actions show server-returned side effects as confirmation ## Done