Meridian handbook
Concepts

Concepts

The ideas every Meridian project rests on (sites, locales, routes, documents and publishing, modules and bundles, stable ids, users and permissions) and how they fit together.

Read this section before you model content or write templates. Each page explains one idea, shows the configuration that expresses it, and links to the full reference.

The model in one paragraph

An install is one engine, one database and one project directory. It declares its locales once and serves one or more sites; each site enables some of the locales and answers on its own domains. Content types are shared by every site unless limited, and each site’s routes decide which types have pages on it and at which URLs. Content is stored as documents: each has a draft and a published state per locale, a revision history, and a structure shared by every locale with the text translated per locale. Modules, compiled into the binary as a bundle, add types, configuration files, screens and commands to this core. Every element of the configuration carries a stable id beside its name, so renaming it keeps its data. Staff sign in to the admin and act through roles granted to their groups under a scope; members of the public realm sign in to the member portal (engine-dmo) and never hold staff permissions.

The same model as a diagram of what relates to what:

erDiagram
  INSTALL ||--|{ LOCALE : declares
  INSTALL ||--|{ SITE : serves
  SITE }o--|{ LOCALE : enables
  SITE ||--o{ ROUTE : has
  CONTENT_TYPE ||--o{ ROUTE : "is routed by"
  CONTENT_TYPE ||--o{ DOCUMENT : "is the type of"
  SITE ||--o{ DOCUMENT : owns
  DOCUMENT ||--|| SHARED_CHAIN : "has one"
  DOCUMENT ||--|{ LOCALE_CHAIN : "has one per locale"
  GROUP ||--o{ GRANT : "is given"
  ROLE ||--o{ GRANT : "is granted by"

Pages

Where each concept lives in a project

ConceptFilesCommands
Localesconfig/locales.yamlengine-dmo dev locale add, engine-dmo locale
Sitesconfig/sites/<key>/site.yamlengine-dmo dev site add, engine-dmo dev site rename
Routesconfig/sites/<key>/routes.yamlengine-dmo dev route add, engine-dmo describe route
Content typesconfig/schema/, config/sites/<key>/schema/engine-dmo dev type add, engine-dmo dev field add, engine-dmo describe type
DocumentsThe database; seed/documents/ to load someengine-dmo content, engine-dmo seed
ModulesCompiled into the binaryengine-dmo version
Stable idsEvery configuration file, as id:engine-dmo check --fix, engine-dmo schema plan
Roles and grantsconfig/access/roles.yaml, config/access/grants.yamlengine-dmo user, engine-dmo access matrix