Content Types
Define your own structured collections — no database required.
Structured content, no database
Ten field types
Every field on a content type is one of:
Reserved slugs
blog, api, admin, media, assets, public, _astro are all off-limits, and slugs and field keys both follow a strict, URL-safe pattern.Draft & published status
Finding a type or an entry
Displaying entries
Detail-page templates
Every content type — including the built-in blog — has its own detail-page template: a real, canvas-editable layout that every entry of that type renders through. Bind text to a field with {{fieldKey}} placeholders (title, a custom field, whatever the type has), and mark where the entry's body and table of contents render — style it once in the visual editor and every entry picks it up automatically.
A content type can have several saved template variants with exactly one active at a time, and a locale can have its own variant entirely — a genuinely different layout for a translated audience, not just translated text, falling back to the default template when no locale-specific one exists. Templates are editable from the dashboard, from an MCP-connected AI agent, or by asking the AI chat panel directly.
While you're editing a template, the canvas picker lets you preview it against any real published entry — {{fieldKey}} placeholders and the body/table-of-contents markers resolve to that entry's actual content instead of showing empty tokens, so you can see exactly what the layout will look like. You're always editing the shared template, never that one entry — double-clicking a bound field still edits its underlying {{fieldKey}} token, and the canvas snaps back to showing the live entry's data as soon as you commit the change.