4.5 KiB
riotpiao — Task Board (Next.js portfolio, mock-backed)
This repo is scoped to the Next.js portfolio frontend only. Anything requiring kubectl, a real cluster, a Go
backend, or infra-side config (Cloudflare, GitOps, RBAC) has been moved to REQUIREMENTS.md —
a handoff spec for whoever builds the real atlas backend service. The four cluster-visualization surfaces
(topology, delivery, terminal, chat) run against mock /api/* Next.js route handlers backed by
lib/clusterMock.ts fixture data.
Source of truth: docs/PLAN-atlas.md, docs/adr/ADR-0001-atlas-cluster-visualization.md
Rules carried from the ADR (frontend-relevant subset):
- I2: browser never talks to an internal API directly — all cluster data flows through this app's own
/api/*routes (mock today, real atlas later) - I3: redaction is allowlist-only — the mock fixture already excludes denied fields, keep it that way when replacing with real data
- TDD: RED (tests named before code) -> GREEN (minimal code) -> REFACTOR, per phase
- Playwright e2e is a hard requirement for every UI-shipping phase (2, 3, 4, 5) — no surface merges without a passing spec
0 — Setup
| Task | Description |
|---|---|
| 0.6 | Add Vitest + Testing Library + msw |
| 0.6a | Add Playwright (hard requirement) |
2 — Topology (Surface B)
| Task | Description |
|---|---|
| 2.2 | topology.test.tsx (RED) |
| 2.3 | topology.e2e.ts (RED, Playwright — hard requirement) |
| 2.4 | GET /api/topology (mock, GREEN) — done |
| 2.5 | GET /api/stream (mock, GREEN) — done |
| 2.6 | Frontend: React Flow topology graph (GREEN) |
| 2.7 | Security headers (GREEN) |
| 2.9 | simplify skill pass (REFACTOR) |
3 — Delivery Tree (Surface E)
| Task | Description |
|---|---|
| 3.2 | delivery.test.tsx (RED) |
| 3.3 | delivery.e2e.ts (RED, Playwright — hard requirement) |
| 3.4 | GET /api/delivery (mock, GREEN) — done |
| 3.5 | GET /api/delivery/{app}/resources (mock, GREEN) — done |
| 3.6 | Frontend: wave columns + resource tree (GREEN) |
| 3.7 | Live sync animation (mock, GREEN) |
| 3.9 | simplify skill pass (REFACTOR) |
| 3.10 | Landing page: remove fabricated stats and dead links (GREEN) |
4 — Terminal (Surface C)
| Task | Description |
|---|---|
| 4.3 | terminal.e2e.ts (RED, Playwright — hard requirement) |
| 4.4 | POST /api/exec (mock, GREEN) — done |
| 4.5 | Command set (GREEN) |
| 4.6 | Namespace/resource-name validation by fixture membership (GREEN) — done |
| 4.8 | Frontend: wire terminal page to /api/exec (GREEN) |
| 4.9 | Log rejected /api/exec input (GREEN) — done |
| 4.10 | simplify skill pass (REFACTOR) |
5 — Chat + Rate Limiter (Surface D)
| Task | Description |
|---|---|
| 5.6 | chat.e2e.ts (RED, Playwright — hard requirement) |
| 5.7 | POST /api/chat (mock, GREEN) — done |
| 5.9 | Queue position streamed as SSE (mock, GREEN) — done |
| 5.12 | Chat SSE event types (mock, GREEN) — done |
| 5.13 | Frontend: wire chat page to /api/chat (GREEN) |
| 5.16 | pnpm audit CI gate (GREEN) |
| 5.17 | simplify skill pass (REFACTOR) |
Progress
Status as of 2026-08-19: mock API layer implemented (app/api/topology, /api/stream, /api/delivery,
/api/delivery/[app]/resources, /api/exec, /api/chat) — all [x]-marked GREEN tasks above are done.
Remaining work is wiring the four page components to fetch from these routes instead of importing
clusterMock directly (2.6, 3.6, 4.8, 5.13), plus the RED (Playwright/Vitest) specs and REFACTOR passes.
Everything cluster/backend/infra-related that used to block this board now lives in REQUIREMENTS.md and does not gate any task here.