Skip to main content
View as Markdown

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.

app.yaml
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 }.
app.yaml
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.

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.

Built with Sovrium