Registry

Stakeholder-Facing UI Routes

The pages of a registry meant for non-developer stakeholders to browse.

A registry isn't only an API/MCP endpoint; it's a browsable site. All of these routes read through getDataProvider() (see Model), so they render whatever's been pushed and show a useful empty state before anything has.

Foundations

/foundations and its sub-pages, the visual design-token reference for designers and stakeholders, not just developers:

RouteShows
/foundationsLanding page linking to every foundation below.
/foundations/colorsColor palette, semantic tokens, light/dark usage.
/foundations/typographyType scale, families, sizes, weights, line heights.
/foundations/spacingSpacing scale for margins/padding/gaps.
/foundations/border-radius, /effects, /elevation, /grid, /motionThe remaining token categories, one page each.
/foundations/logoThe client logo, for all digital/offline materials — reads the logo set.
/foundations/icons, /foundations/icons/[name]The icon catalog and per-icon detail.
/foundations/assets, /foundations/assets/[id]General asset browsing (uploads, non-icon/logo media).
/foundations/[...slug]Catch-all for hand-authored/overridden foundation markdown pages, see Concepts → Pages / docs.

System

/system, the developer/QA-facing counterpart to Foundations, oriented around components and health rather than tokens:

RouteShows
/systemLanding page.
/system/component, /system/component/[component]Component catalog and per-component doc/preview, see Concepts → Components.
/system/pattern, /system/pattern/[pattern]Saved pattern catalog and detail.
/system/changelogThe unified changelog UI, see Concepts → Changelog / audit.
/system/healthValidation health-score trend, built from handoff_validation_run snapshots recorded on push.
/system/figma-syncFigma component audit results — drift between Figma components and locally registered ones.

Assets, design, and playground

RouteShows
/assets, /assets/[id], /assets/fonts, /assets/logosThe general asset library — browse, filter by collection/type; fonts and logos get dedicated sub-views.
/patternsSaved layout patterns, searchable/browsable outside the /system/pattern developer view.
/playgroundThe interactive pattern builder — compose component blocks into a saved pattern.
/design, /design/library, /design/library/[id], /design/assetsThe AI design workbench — generate/review design artifacts, browse the design library, see Concepts → Design artifacts. Requires HANDOFF_AI_API_KEY (or a cloud AI proxy) to be configured.

Account (any signed-in user)

RouteShows
/accountProfile — name, email, avatar.
/account/appearanceStructured UI customization (logo, color/font overrides) — the handoff_registry_appearance singleton row, see Singleton config rows.
/account/integrationsLinked accounts (e.g. Figma) and personal integration settings.
/account/ai-costThe signed-in user's own AI usage/cost, from handoff_event_log.
/account/usersUser invite/role/remove management. Admin only: see Auth → Roles & invites.

Admin (admin role required)

RouteShows
/admin/pagesThe page/doc manager — create, edit, and organize markdown pages.
/admin/buildsThe merged component-build + design-asset-extraction job queue.
/admin/ai-costRegistry-wide AI usage/cost (vs. /account/ai-cost's per-user view).
/admin/integrationsRegistry-wide integration status/config.
/admin/referenceAI-generated reference materials (design guidelines, brand voice) — view or regenerate.
/admin/usersRedirects to /account/users — user management lives there, not under /admin.

Developer

/developer, reference material and setup guides aimed at the engineers integrating with a registry, mirroring this docs site's own Workspace/API/MCP pillars from inside the running registry itself:

RouteShows
/developerLanding page linking to the five below.
/developer/cliCLI reference — install, authenticate, push/pull/fetch/build.
/developer/apiInteractive OpenAPI 3.1 explorer.
/developer/mcpThe MCP tool catalog, generated from the same getMcpToolCatalog() source as MCP → Tool catalog.
/developer/push-pullWhat push:all sends and how pull writes changes back.
/developer/local-setupOAuth device login, MCP config for Cursor/Claude, running push/pull locally. (/dev/local-setup redirects here.)

Auth pages

/setup, /login, /reset-password, and /cli/device (the device-code approval page), see First-admin setup and MCP → Authentication for /cli/device specifically.

Empty states before the first push

Every route above renders through getDataProvider(), so a freshly deployed, unpushed registry doesn't error, foundation/system/asset pages show an empty or "nothing pushed yet" state rather than a crash. Push content with handoff-app push:all to populate them, see Deploy.

On this page