Skip to content

The content inventory (admin)

In the admin: Content — the screen this page documents (opens in the running app).

What/why: Content & media — what this screen manages and why it exists.

The Content screen under /admin/content is the content home: a single inventory of every piece of app content, so an editor sees the whole surface — what's live, what's drafted, and what's unset — in one place instead of hunting across screens. It is restricted to the data editor capability (edit_data); see admin-access.md.

The site carries two structurally-distinct kinds of content, and the inventory shows both side by side, clearly distinguished (for the model behind them, see the content-model reference):

  • CMS pages — admin-authored static pages you create, compose from sections, and publish to /<slug>. Fully CRUD-able: the page (and, until first publish, its URL) is yours to change.
  • Code-routed pages — named copy slots on fixed routes owned by the app (the home splash headline and body). The copy is editable, but the route itself is set in code — there is no "new" or "retire" for these, only edit-and-publish.

What the inventory shows

CMS pages

Each CMS page lists its title, slug, status (Draft / Published / Retired), section count (how many typed blocks compose its body), and last updated date. A published page also links to its live public URL (/<slug>); a draft or retired page has nothing public to open, so no public link is shown.

The lifecycle actions run directly from the inventory — it is a real content home, not a read-only list:

  • New page reveals an inline create form (a title, and an optional slug derived from the title). A new page is always born a draft.
  • Publish takes a draft live at /<slug> and permanently locks its slug (a live URL must never rot).
  • Retire takes a published page offline — a soft, reversible change; the page and its content are preserved.
  • Re-publish / Revive to draft bring a retired page back, as-is or for editing first (the slug stays locked).
  • Edit opens the full page editor (/admin/pages/[id]) for the title, slug, and sections.

These are the same operations — and the same audited write layer — as the Pages screen; the inventory simply surfaces them from the one home.

Code-routed pages

Each code-routed page shows how many slots it owns and their state — how many are published (serving edited copy) versus unset (serving the built-in default) — with a Draft pending marker when a slot has an unpublished working copy. Edit content jumps to the page-content editor, where you draft and publish each slot's copy. The route is fixed in code, so there is nothing to create or retire here.

Where editing happens

The inventory is the map; the deep editors are unchanged and it links into them:

To…Go to
Create, publish, retire, or revive a CMS pagehere, on /admin/content
Edit a page's title, slug, or sectionsPages (/admin/pages/[id])
Edit a code-routed slot's copyPage content (/admin/page-content)

Every create, publish, retire, and revive is written to the audit trail with the acting editor's identity.