Skip to main content
View as Markdown

App Metadata

Four scalar root properties shape your application's identity: name, version, description, and badge. Only name is required. The first three anchor Sovrium's append-only migration history; badge controls the "Built with Sovrium" attribution pill.

app.yaml
name: '@acme/crm'
version: 2.1.0
description: 'A CRM workspace for managing contacts, deals, and tasks.'
badge: false # optional — removes the "Built with Sovrium" badge

name

The app name follows npm package naming conventions. It is lowercase, URL-safe, and the only required property in the entire schema.

Constraint Description
Pattern ^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$ — lowercase letters, digits, hyphens, dots, tildes.
Length 1–214 characters (including the @scope/ prefix if scoped).
Leading Cannot start with a dot or underscore; no leading/trailing spaces.
Scoped npm-style scoped names are allowed: @scope/name (e.g. @acme/dashboard).
app.yaml
# Valid names
name: my-app
name: task-tracker-v2
name: '@acme/dashboard'

version

A Semantic Versioning 2.0.0 string (semver.org). Optional, but recommended — when present it labels the migration history described below.

Rule Description
Format MAJOR.MINOR.PATCH (e.g. 1.0.0). Each component is a non-negative integer.
No leading 0 01.0.0 is rejected — version components must not have leading zeros.
Pre-release Optional hyphen suffix: 1.0.0-alpha, 1.0.0-beta.1, 2.0.0-rc.1.
Build metadata Optional plus suffix: 1.0.0+build.123, 1.0.0-alpha+001.
app.yaml
version: 1.0.0 # Stable release
version: 2.0.0-beta.1 # Pre-release
version: 1.0.0+build.42 # Build metadata

description

A single-line description shown in the admin UI and metadata.

Constraint Description
Format Single line only — line breaks (\n, \r) are rejected.
Max length 2000 characters.
Unicode Full Unicode support including emojis.
app.yaml
description: 'Full-featured e-commerce platform with cart, checkout & payment processing'

badge

A boolean controlling the "Built with Sovrium" badge — a small link pill rendered bottom-right on every page of your app. Optional; shown by default.

Value Behavior
(omitted) Badge shown — the default.
true Badge shown (explicit).
false Badge removed from every page.
app.yaml
name: my-app
badge: false # removes the badge — one line, free, forever

The badge is pure server-rendered chrome with zero telemetry: a single static <a> linking to sovrium.com — no beacon, no pixel, no client-side JavaScript. Its label follows the page's active locale (English "Built with Sovrium", French "Construit avec Sovrium", English fallback for other locales); the text itself is not customizable. It appears on app pages, the default homepage, error pages, and standalone form pages — and is always absent from the /_admin operator console and from embedded (?embed=true) form variants.

Version history

Sovrium is a configuration-as-code interpreter: an app's configuration lives in its app.ts / app.yaml file (or the APP_SCHEMA environment variable) and changes only when that source changes and the app re-deploys. There is no runtime config-editing surface — no draft, no publish API, no admin-dashboard schema editor (the dashboard reflects runtime data, never configuration). Your own version control is the authoritative history of what the config was and when.

For observability, Sovrium keeps an append-only migration history inside the app's own database. Each time a schema change is applied on boot, one row is recorded with the applied version, a checksum of the schema, and the schema snapshot — an audit trail of exactly which schema the running app is on. Additive changes (new tables, new fields) apply live on boot; destructive changes are deferred to a restart for safety. See Migrations for how schema evolution is applied.

Reloading a running server

sovrium reload signals a running server to re-read its config file without a full restart, so an edit to app.ts / app.yaml takes effect in place. Because the file (or APP_SCHEMA) is the single source of truth, the live app never diverges from it at runtime — there is nothing to reconcile.

Next steps

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