Features / Edit

A real admin UI

Forms, lists and the media browser are generated from the schema and run inside the same binary on the same port as the API. No second deployment, no Node process on the side.

Headless often means the editorial team gets a JSON field or nothing at all. RustyCMS ships the interface with it — generated from the schema, embedded in the binary, served under /admin/ on the same port as the API. One process, one deployment, one session for both.

The schema is the form

Every collection gets its form from the type definition: required fields, enums as pickers, a Markdown or rich-text editor depending on the format, date fields with a timezone offset. Conditional fields only appear when their condition holds. Arrays are sortable by drag. References are chosen in a picker with server-side search — or created inline if the schema allows both.

location: {
  type: "string",
  showIf: { field: "type", eq: "event" }   // only visible for events
}

The field is always stored and validated; only its visibility depends on the condition.

Lists that do the work

The content list has full-text search, status filters and facets with hit counts for every enum field. Multi-select unlocks bulk actions: publish, set to draft, archive, delete. Clicking a status badge cycles the state. “Duplicate” creates a copy as a draft. Entries flagged _template: true show up at the top of the “New entry” dialog and pre-fill the form — templates without a schema change.

Nothing gets lost

A banner on the form flags unsaved changes; leaving the page asks first. If two editors open the same entry, the second one sees who is working on it — a write that bypasses the lock is rejected. The validation page checks the entire content set against the current schemas, groups errors per collection and links straight to the broken entry.

Cmd+K, theme, language

Spotlight (Cmd+K) searches across all visible collections; picking a hit jumps to the editor. Light, dark or system theme — no flash on reload, accent color and corner radius adjustable per user. The interface itself is available in English and German.

Deliberately left out

No visual schema builder: you write schemas as JSON5 in the built-in editor, and schema design stays a developer task. No tables — lists are cards, so they work on a phone as well.

Want to see this on your own project?

Tell me briefly what you're planning. I'll show the admin UI on a real installation and say honestly whether it fits.

Request early access