Getting started

Admin UI

Install the reference admin dashboard from the shadcn registry.


The admin dashboard is a reference implementation, not part of the engine. It ships as a shadcn registry item so you pull it into your own app and own the code.

What it covers

  • Collection lists with filters, sorting, and status badges; document forms with a widget per field type

  • The workflow actions the caller is allowed: publish and unpublish, or request and withdraw review; scheduled publishing; revisions with diff and restore; translations

  • The schema editor (/admin/schema): edit a collection's settings and fields, collect the changes, and submit them as one proposal

  • Proposal review (/admin/proposals): the operations, their measured impact on stored documents, and approve or reject

  • A spec editor for pages and layouts with a live preview, resolved by POST /api/_cms/pages/_preview and rendered with the site's own component registry

  • Media, search, users (Better Auth admin plugin), and API keys with a ready-to-copy MCP connect command

Prerequisites

  • The CMS router mounted at /api (see Quick start). The admin only calls the API through useCMS() from @interactive-inc/cms/admin.

  • Better Auth at /api/auth with the admin plugin and the admin, editor, and viewer roles (the reference app uses void/auth).

  • A Void app with @void/react. Admin pages render client-side (ssr = false) and import with the @/ alias for src.

  • A shadcn project on the base-ui primitives, initialized with the sera preset: npx shadcn@latest init --preset sera.

Install

npx shadcn@latest add https://cms.open.localhost/r/cms-admin.json

The item writes pages/admin/**, the admin components under src/components, the auth client helpers under src/lib, and the site component catalog under src/site that the spec preview renders with. It lists the shadcn primitives it needs as registry dependencies, so they resolve to the style in your components.json.