ChicoryTV SPA: Dashboard screen #83

Closed
opened 2026-07-02 01:07:18 +02:00 by timothy · 2 comments
Owner

Recreate design-system/templates/chicorytv-admin/Dashboard.jsx wired to live API data.

On-air cards, stat tiles, condensed health panel, activity feed, release notes. Acceptance: matches prototype; data from the API; all 3 themes.

Recreate `design-system/templates/chicorytv-admin/Dashboard.jsx` wired to live API data. On-air cards, stat tiles, condensed health panel, activity feed, release notes. **Acceptance:** matches prototype; data from the API; all 3 themes.
timothy added the frontend label 2026-07-02 01:07:18 +02:00
timothy added a new dependency 2026-07-02 01:08:41 +02:00
timothy added a new dependency 2026-07-02 01:08:42 +02:00
Author
Owner

Done

What was done: Recreated the ChicoryTV SPA dashboard from the design-system prototype in the React app. The dashboard now renders API-backed stat tiles, on-air channel cards, condensed health/status rows, activity feed, release/version card, loading state, empty channel state, and API error state. Added a dashboard aggregate hook that reads /api/channels, /api/collections, /api/schedules, /api/sessions, and /api/version through the existing typed request client.

Root cause: n/a

Files changed: web/src/App.tsx, web/src/App.test.tsx, web/src/api/dashboard.ts, web/src/api/index.ts, web/src/shell.css

Verification: cd web && npm test -- --run src/App.test.tsx (14 passed); cd web && npm test -- --run (20 passed); cd web && npm run lint; cd web && npm run build.

Deferred: Detailed release-note body text is not currently exposed by the REST API; the release card uses /api/version and notes that server release-feed content should be wired when a REST endpoint exists.

Follow-up issues: none created.

Docs updated: n/a

## Done **What was done**: Recreated the ChicoryTV SPA dashboard from the design-system prototype in the React app. The dashboard now renders API-backed stat tiles, on-air channel cards, condensed health/status rows, activity feed, release/version card, loading state, empty channel state, and API error state. Added a dashboard aggregate hook that reads `/api/channels`, `/api/collections`, `/api/schedules`, `/api/sessions`, and `/api/version` through the existing typed request client. **Root cause**: n/a **Files changed**: `web/src/App.tsx`, `web/src/App.test.tsx`, `web/src/api/dashboard.ts`, `web/src/api/index.ts`, `web/src/shell.css` **Verification**: `cd web && npm test -- --run src/App.test.tsx` (14 passed); `cd web && npm test -- --run` (20 passed); `cd web && npm run lint`; `cd web && npm run build`. **Deferred**: Detailed release-note body text is not currently exposed by the REST API; the release card uses `/api/version` and notes that server release-feed content should be wired when a REST endpoint exists. **Follow-up issues**: none created. **Docs updated**: n/a
Author
Owner

Post-closure audit (2026-07-02, plan audit under #59): the shipped Dashboard only partially meets "data from the API". Genuinely wired: channel count, transcode sessions, release version, and the shell integration. Stubbed/fabricated: on-air cards (first 4 channels, hash-generated progress, synthesized titles), health panel (real health-check engine unexposed; rows fabricated from counts), activity feed (synthetic), and two mislabeled tiles (schedules counted as playouts, collections as libraries).

Follow-up filed as #109 (blocked by #100 playouts list, #103 media-sources read model, #108 health API, #97 on-air state). Leaving this issue closed; #109 carries the remediation.

Post-closure audit (2026-07-02, plan audit under #59): the shipped Dashboard only partially meets "data from the API". Genuinely wired: channel count, transcode sessions, release version, and the shell integration. Stubbed/fabricated: on-air cards (first 4 channels, hash-generated progress, synthesized titles), health panel (real health-check engine unexposed; rows fabricated from counts), activity feed (synthetic), and two mislabeled tiles (schedules counted as playouts, collections as libraries). Follow-up filed as **#109** (blocked by #100 playouts list, #103 media-sources read model, #108 health API, #97 on-air state). Leaving this issue closed; #109 carries the remediation.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: timothy/ersatztv#83