System
An installed game system — the ruleset that defines what content looks like.
A System is the top-level container in the app. It does not hold content itself; it
describes it. The installed system directory (see dataURL) supplies the entity
definitions, forms, views, filters, themes, icons, fonts, localizations and migration
scripts that drive the entire UI, so adding a content type is a system change rather than
a code change.
Exactly one system is primary at a time; SystemManager loads it at launch and caches
every definition it contains. Systems are installed from .system archives or downloaded
as a Package.
Examples
Section titled “Examples”-
"dnd5e"— D&D 5th Edition -
"generic"— the system-agnostic default -
SeeAlso:
Module,Campaign,Package
| Property | Type | Required | Description |
|---|---|---|---|
id |
string |
Yes | The unique identifier for this system. Unlike most models this is an author-chosen, stable, lowercase slug rather than a UUID. It serves as the Realm primary key, names the system’s directory on disk, and is the value stored in the system field of every Entity, Module and Campaign. Examples: "dnd5e"; "pf2e" |
name |
string |
Yes | The display name of the system. The full human-readable title shown in the system browser and settings. Examples: "Dungeons & Dragons 5th Edition" |
version |
string |
Yes | The system’s own content version. Set by the system author. Entities record the version they were authored against in their systemVersion field, and the JavaScript migrations under migrations/ are run to bring older entities up to this version. Format: Semantic versioning: "1.2.3" SeeAlso: migrations, migrateData(realm:) |
descr |
string |
No | The full description of the system. Contains the author’s overview of what the system covers. Displayed in detail views. |
shortDescr |
string |
No | A condensed one-line description of the system. A brief summary used where the full descr is too long, such as list rows and cards. |
author |
string |
No | The author or publisher of the system. Examples: "Encounter+ Dev Team" |
shortName |
string |
No | An abbreviated name for the system. Used where the full name does not fit, such as sidebar labels and compact headers. Examples: "D&D 5e"; "Generic" |
website |
string |
No | The system’s homepage. An absolute URL string pointing to the product page, author’s site, or documentation. |
repository |
string |
No | The source repository hosting the system. An absolute URL string, typically to a Git repository the system is developed in. Examples: "https://github.com/example/dnd5e-system" |
package |
string |
No | The package manifest this system was installed from. An absolute URL string pointing to the JSON manifest describing the system and its downloadable versions. Used to check for and install updates. SeeAlso: Package, packageURL |
image |
string |
No | The file path to the system’s cover image. The main visual asset shown for the system in the system browser. Note: Relative file paths are resolved against the system’s dataURL. Examples: "cover.jpg" |
banner |
string |
No | The file path to the system’s banner image. A wide image used as a header behind the system’s title. Note: Relative file paths are resolved against the system’s dataURL. Typical Specifications: Wide aspect ratio (roughly 3:1); At least 1200 pixels wide |
data |
Object |
No | Flexible JSON storage for system-specific or arbitrary structured data. Stores author-defined metadata that does not fit the standard schema. |
attributes |
Object |
Yes | Dynamic attribute storage supporting various data types. A flexible key-value store for attributes and properties that need to be queryable or frequently accessed. Supports multiple data types through RealmAny. |

