Goal
Define one canonical ComponentSpec contract shared by backend and frontend, so scraped data can be rendered as a dashboard reliably.
Scope
- A single schema for
ComponentSpec (type, props, children) and LayoutSpec, documented in one place.
- Supported component types (initial):
metric_card, bar_chart, line_chart, pie_chart, comparison_table, data_grid, map, plus layout primitives (grid, stack, text, divider, spacer).
- Server-side validation with required-prop checks and a safe fallback component for invalid specs (never render
[object Object] or crash).
- Retire any second, competing UI-spec concept so there is exactly one contract.
Acceptance criteria
Part of the v2.0 — Generative UI milestone.
Goal
Define one canonical
ComponentSpeccontract shared by backend and frontend, so scraped data can be rendered as a dashboard reliably.Scope
ComponentSpec(type, props, children) andLayoutSpec, documented in one place.metric_card,bar_chart,line_chart,pie_chart,comparison_table,data_grid,map, plus layout primitives (grid,stack,text,divider,spacer).[object Object]or crash).Acceptance criteria
Part of the v2.0 — Generative UI milestone.