Pages Overview
A page is a route plus a tree of components, rendered on the server. Pages display your tables' records, host forms that write to them, embed interactive islands, and serve public content — all from configuration, with no custom React.
Three properties are required: name, path, and components. Everything else layers on top.
pages:
- name: Home
path: /
meta:
title: Welcome
description: The fastest way to ship internal tools.
components:
- type: hero
content: Build apps from config
- type: container
children:
- { type: text, content: 'Get started in minutes.' }Page Properties
| Property | Description |
|---|---|
name |
Required. Page name, 1–63 characters. Used in navigation and admin listings. |
path |
Required. The URL route. Lowercase only. See Routing & Paths. |
components |
Required. The render tree. See The Component Model. |
id |
Optional unique identifier. Auto-generated when omitted. |
meta |
Document-head metadata — title, description, social cards, structured data. See SEO & Metadata. |
access |
Who may load the page. See Layouts, Sidebars & Access. |
dataSource |
Page-level table binding, exposing one record or a set to the whole tree. See Data Binding. |
collection |
Generate one route per table record. See Collection & Markdown Pages. |
markdown |
Render the page body from a markdown file or string. |
contentDir |
Generate one page per markdown file in a directory, with a derived sidebar. |
source |
{ file } — load markdown from disk for a content component. |
layout |
Layout sections wrapping the body — currently a data-bound sidebar array. |
scripts |
Client-side scripts, feature flags, and config data. See Scripts. |
vars |
Page-scoped key/value pairs, referenceable as $vars.*. Values are strings, numbers or booleans. |
toasts |
Toast placement — position (top-right, bottom-center, …) and a default duration. |
viewTransition |
Navigation animation — type (fade, slide, none), direction (left, right, up, down), duration. |
sitemap |
{ priority, changefreq }, or false to exclude the page from the sitemap. |
rss |
RSS feed for a collection page — true for defaults, or { limit }. |
pages:
- name: About
path: /about
access: all
meta: { title: 'About Us' }
viewTransition: { type: fade, duration: 200 }
components:
- { type: text, element: h1, content: 'About' }Routing
Path forms, dynamic :param segments, and record detail routes are covered in Routing & Paths.
The Component Model
The component tree, the shared modules every component composes from, and the category map now live in The Component Model.
Data Binding
dataSource and the $record / $vars / $currentUser / $t: reference families are covered in Data Binding.
Collection Pages
Generating a route per record is covered in Collection & Markdown Pages.
Markdown Pages
Markdown bodies and content directories are covered in Collection & Markdown Pages.
Layouts & Sidebars
The layout block and data-bound sidebars are covered in Layouts, Sidebars & Access.
Access Control
The access property is covered in Layouts, Sidebars & Access.
Related Pages
- Routing & Paths — how a
pathresolves. - Data Binding —
dataSourceand reference substitution. - The Component Model — the shared module system.
- SEO & Metadata — document head and social cards.
- Tables Overview — the data models pages render.
- Theme — design tokens consumed by component styling.
Last updated August 11, 2026
This documentation was written with AI, so errors or outdated content are possible. Sovrium is in beta. Contributions and corrections are welcome.