# admin-compliance

Next.js 15 dashboard for BreakPilot Compliance — SDK module UI, company profile, DSR, DSFA, VVT, TOM, consent, AI Act, training, audit, change requests, etc. Also hosts 96+ API routes that proxy/orchestrate backend services.

**Port:** `3007` (container: `bp-compliance-admin`)
**Stack:** Next.js 15 App Router, React 18, TailwindCSS, TypeScript strict.

## Architecture (Phase 3 — in progress)

```
app/
├── <route>/
│   ├── page.tsx              # Server Component (≤200 LOC)
│   ├── _components/          # Colocated UI, each ≤300 LOC
│   ├── _hooks/               # Client hooks
│   └── _server/              # Server actions
├── api/<domain>/route.ts     # Thin handlers → lib/server/<domain>/
lib/
├── <domain>/                 # Pure helpers, zod schemas
└── server/<domain>/          # "server-only" logic
components/                   # App-wide shared UI
```

See `../AGENTS.typescript.md`.

## Run locally

```bash
cd admin-compliance
npm install
npm run dev          # http://localhost:3007
```

## Tests

```bash
npm test                      # Vitest unit + component tests
npx playwright test           # E2E
npx tsc --noEmit              # Type-check
npx next lint
```

## Known debt

- `lib/sdk/types.ts` has been split: it is now a barrel re-export to `lib/sdk/types/` (12 domain files: enums, company-profile, sdk-steps, and others).
- `lib/sdk/tom-generator/controls/loader.ts` has been split: it is now a barrel re-export to `categories/` (8 category files).
- Phase 3 refactoring is ongoing — several large page files remain and are being addressed incrementally.
- **0 test files** for the page layer. Adding Playwright smoke + Vitest unit coverage is ongoing Phase 3 work.

## Don't touch

- Backend API paths without updating `backend-compliance/` in the same change.
- `lib/sdk/types/` barrel re-exports — add new types to the appropriate domain file, not back into the root.
