Skip to main content
Version: 0.7 (Next)

Theme Starter

Provenance: UPSTREAM — the template you copy to build your own theme.

Source: github.com/konstructio/theme-starter

The starter is two things at once. Unlaunched, it's a guide that explains the theme model to visitors. Launched, it's the reference read-only operations view — every read the theme contract offers, rendered honestly, in one static frontend plus static/theme.js and nothing else.

The launched dashboard covers:

  • Fleet summary — apps live/building/failed, replicas running, cores and memory in use now, and the regions apps can target
  • Organization — the quota allowance meters, the plan's entitled app sizes, and the metered rates, all straight from discover() and quota()
  • Environments — apps grouped by the environment they ship into, with each zone's display name, free/paid and enabled state, and resource draw as the group header
  • App cards — phase, URL, custom domain and volume badges, resolved size (real cpu/memory, not just the key), replicas, branch, port, sub path, env var count, whether the app is public or internal-only, and the failure message inline when a build breaks
  • App detail — CPU/memory charts with limit ceilings, network rx/tx, pods and restarts (with a restart warning when the last hour wasn't clean), the real deployment history (build number, why it ran, revision, duration), live runtime logs, and the latest build output
  • Character strip — the signed-in user's cross-theme progression ledger, read-only
Capabilitiesall read operations: discover, zones, apps, metrics, quota, buildLogs, deployments, regions, character + the logs and appEvents streams
Vocabularynone — contract terms as-is
Characterread-only display of the shared ledger
LaunchPlatform as a Service → Themes → Theme Starter → Launch — pin it from Themes to give it its own navigation entry

Start here when creating a theme: copy the repository, keep static/theme.js exactly as it is, replace the UI with your metaphor. If you'd rather skip hand-authoring entirely, the Forge can generate a starting point from a short description instead.