# Sprint 2.1 — Web dashboard MVP **Status:** Done ## Goals Warmbox-branded operator dashboard for daily warmup management without curl. ## Screens | Route | Purpose | |-------|---------| | `/` | Workspace overview, metric cards, alerts | | `/campaigns` | Campaign list with status filters | | `/campaigns/new` | 4-step wizard with recipe preview | | `/campaigns/:id` | Overview, activity, satellites, compliance tabs | | `/mailboxes` | CRUD + connection test | | `/mailboxes/:id` | Detail + DNS check | | `/activity` | Global log feed | | `/settings` | AI settings, API key gate, job triggers | ## Stack - Vite 6 + React 19 + TypeScript - Tailwind + shadcn-style components - TanStack Query + React Router v7 - Recharts for ramp and placement charts - Mobile: bottom nav `< md`, sidebar `≥ md` ## Auth (self-hosted) - API key stored in `sessionStorage` - Skipped when server has no `API_KEY` set (dev mode) ## Verification 1. Open dashboard, enter API key if required 2. Create mailbox via provider preset 3. Launch campaign through wizard 4. Confirm stats on dashboard and campaign detail