Configuration reference
- ComponentsYour layout and logic
- ConfigRegistered fields + defaults
- SupabasePublished overrides
- WebsiteValid override or default
The configuration is versioned JSON; it is read by the website, editor and CLI. Every field has a globally unique key, label, supported type, default string and maxLength (1–20000). Page and section IDs use lowercase letters, digits and hyphens. Paths are root-relative routes. Duplicate keys/IDs, executable URLs and unsupported definitions fail validation.
Use namespaced keys such as about.title in new projects. Existing hero_title and other legacy keys remain supported in this repository. A page whose ID is global contributes shared fields to every page read. A config entry does not create a Next.js route. Default values are a fallback, not a seed operation that overwrites the database.
| Type | Behavior |
|---|---|
| text | Single-line editor; plain text, not HTML |
| textarea | Multiline plain text |
| url | HTTPS or root-relative path; no executable protocols or embedded credentials |
| image | Image upload; server emits WebP. SVG image URLs are rejected. |
{
"version": 1,
"pages": [{
"id": "home", "label": "Home", "path": "/",
"sections": [{
"id": "hero", "label": "Hero",
"fields": [{
"key": "home.title", "label": "Title", "type": "text",
"default": "Welcome", "maxLength": 180
}]
}]
}]
}