Configuration

Configuration

A deployment is defined by a config directory — the contract the GUI writes into a streamer's config repo. The site has no built-in content, so every build needs one. A build with no config (and no site.yaml) fails.

Point a build at a config directory with the CAPYSTREAMA_CONFIG_DIR environment variable:

CAPYSTREAMA_CONFIG_DIR=/path/to/config pnpm build
bash

Files

FileRequiredPurpose
site.yamlIdentity: stream_name, streamer.
schedule.yamlThe weekly schedule. Absent → schedule page disabled.
worlds.yamlWorlds and their per-locale display names.
theme.jsonColor token overrides ({ "light": {...}, "dark": {...} }).
messages/<locale>.jsonOverride existing message keys and add new ones.

site.yaml

Identity, fed into the title, greeting, and schedule-label messages:

stream_name: Dev Stream
streamer: Dev Streamer
yaml

schedule.yaml

Each weekday maps to a list of streams. Times are 24-hour "HH:MM" strings in the streamer's local time ("24:00" means end of day); end can be a flexible window with earliest/latest. Each stream's world must be a key defined in worlds.yaml, validated at build time. platform is optional.

saturday:
    - start: "13:00"
      end:
          earliest: "15:00"
          latest: "16:00"
      game: Stardew Valley
      world: sandbox
    - start: "16:00"
      end:
          earliest: "18:00"
          latest: "19:00"
      game: Minecraft
      platform: Bedrock
      world: sandbox
yaml

When schedule.yaml is absent, the schedule page is hidden and /schedule redirects home.

worlds.yaml

Worlds keyed by id, with a display name per locale:

sandbox:
    en-US: The Sandbox
    es-US: La Caja de Arena
yaml

Any world referenced by schedule.yaml must exist here, or the build fails.

See Theming for theme.json and Localization for messages/<locale>.json.