Entry types describe the shape of a content entry: which fields it has, whether it can act as a parent to other entries, how it appears in the dashboard, and how its public URL is constructed. Every entry stored by Alinea belongs to exactly one type. You define types withDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/alineacms/alinea/llms.txt
Use this file to discover all available pages before exploring further.
Config.document, Config.type, or — for seeded entries — Config.page, then register them all in a schema with Config.schema.
Config.document — entries with a URL path
Config.document is the most common way to define an entry type. It automatically adds a title field, a path field (used to build the entry’s URL), and a metadata tab (SEO fields) on top of whatever custom fields you supply.
schema/BlogPost.tsx
Document type injects the following fields, organised into two tabs:
| Tab | Field | Type | Description |
|---|---|---|---|
| Document | title | TextField | Required entry title, displayed in the dashboard sidebar |
| Document | path | PathField | URL path segment, derived from title by default |
| Metadata | metadata | MetadataField | SEO metadata tab (title, description, og-image) |
Config.type — leaf entries without a path
Config.type creates a bare entry type without the built-in title, path, or metadata fields. Use it for structured data entries that don’t need a public URL — settings objects, global config entries, or items inside a list field.
schema/SiteSettings.ts
Config.type is a lower-level primitive. For most content pages prefer
Config.document, which gives you path-based routing out of the box.Config.page — seeded / pre-existing pages
Config.page creates a static page descriptor that is seeded into the content tree on first run. Pass a type reference and optional fields with default values. Seeded pages cannot be deleted from the dashboard.
Seeded home page inside a root
children map:
TypeConfig options
BothConfig.document and Config.type accept the same set of options via TypeConfig.
An object mapping field keys to field definitions created with
Field.*
helpers. Field keys must match [A-Za-z][A-Za-z0-9_]*. For
Config.document these are merged with the built-in title, path, and
metadata fields.Types that can be created as children of entries of this type. Each item is
either a
Type reference or a schema key string. Types without a contains
array are treated as leaf nodes.Default sort order for child entries shown in the dashboard sidebar.
When set to
true, entries of this type are excluded from the dashboard
sidebar content tree. Useful for internal or system-level entry types.A React component rendered as the entry’s icon in the sidebar and entry
list. Accepts any component that renders an
<svg>.Path string to a React component that replaces the default entry editor for
this type inside the dashboard (e.g.
'./src/views/CustomEditor.tsx#CustomEditor').Path string to a React component rendered when this entry appears as a row
in a list or search result inside the dashboard.
Path string to a React component rendered as a thumbnail card for this
entry type.
Controls where newly created child entries are inserted: at the top of the
list (
'first'), at the bottom ('last'), or in any position chosen by
the editor ('free').A function that returns the public URL for an entry of this type. Receives
an
EntryUrlMeta object with status, path, parentPaths, locale,
workspace, and root. Use this to implement custom URL patterns.Type-level preview configuration. Overrides any workspace- or root-level
preview setting for entries of this type.Config.schema — assembling a schema
Pass all your type definitions to Config.schema({ types: {...} }) to produce a typed Schema object. Config.schema accepts a single options argument with a required types map. The keys you use in that map become the canonical type names used in contains string references and in generated entry files.
Assembling a schema
A realistic multi-type example
The following schema models aBlog document that acts as a container for BlogPost documents. Blog uses contains to restrict which types can be nested under it.
schema/index.ts
cms.ts:
cms.ts