Skip to content
KR.

Tiebreak — in-house platform

2025

Headless Multisite

One CMS instance serving many brand sites as data, where each theme declares its own admin surface in a single config file.

Design · Front-end · MotionInternal — not public

Delivered to

Internal — publishing platform

Tiebreak multisite

Core

WordPress multisite, headless

Delivery: Content as a read API

Techniques

3

3 constants, formulas and guards

The publishing substrate beneath a portfolio of brand sites. Rather than giving every brand its own content system — and every editor a different admin to learn — one multisite instance serves them all, exposing content as data for the static front ends to consume. It is the least visually interesting thing in this section and the reason several of the others could be built the way they were.

Internal — not public

Internal publishing infrastructure. No public address, and no host or endpoint appears on this page.

One editing surface underneath a shelf of brand sites.

One CMS instancemultisiteRead APIcontent as dataPer-theme configone file eachShared contentstored onceBrand siteBrand siteBrand siteBrand site
One editing surface underneath a shelf of brand sites. Each theme declares its own admin, API exposure and editor mode in a single config file, so adding a site is adding a file rather than clicking through an admin.

What was built, and for whom.

  • Tiebreak multisite

    Internal — publishing platform

    en

    One instance, many sites, each theme declaring its own admin surface and API exposure through a single config file.

Each one starts with something that was broken.

  1. 01

    A theme declares its own admin surface

    The failure

    Multisite installs drift: each site accumulates its own plugin soup and hand-tuned admin, and after a year no two are configured alike. Onboarding an editor becomes site-specific, and so does every fix.

    The decision

    Give each theme one config file that states what it is and how it should behave — its label, its admin icon, whether its content is exposed on the API, which editor it uses, and whether it participates in shared content. Configuration lives with the theme it configures, so adding a site is adding a file rather than clicking through an admin.

    • constantREADME.md
      tiebreak.config.json — title, icon, api_route, editor mode, global_content
  2. 02

    The block editor is opt-in, not the default

    The failure

    A block editor lets an editor build layout, which sounds like empowerment and behaves like erosion: a headless front end renders from structured fields, and every layout decision made in the CMS is a decision the design system cannot honour or a block of markup it has to accept unseen.

    The decision

    Default the rich editor off and let a theme turn it on when it genuinely wants free-form content. Structured content stays structured, the front end keeps rendering from fields it understands, and the design system stays the only place layout is decided.

    • constantREADME.md
      Editor mode is a per-theme flag, defaulting off

    What it cost

    Editors lose the ability to improvise layout, which some of them want. That is the point rather than a side effect, and on a multi-brand platform it is the difference between a design system and a suggestion.

  3. 03

    Content that belongs to every site lives once

    The failure

    Legal text, risk warnings and shared boilerplate appear on every brand site and change for all of them at once. Copied per site, they are copied wrong within one revision.

    The decision

    Make shared content a first-class capability of the platform that a theme opts into, so the text that must be identical everywhere is stored once and consumed by each site — the same argument the individual brand sites make internally with their own config modules, made one level up.

    • constantREADME.md
      global_content — a per-theme flag for participating in shared content

What it was built on, what is claimed, and what is not.

Core

WordPress multisite, headless

Chosen for the editor, not the renderer. Editors already know it; nothing it renders is ever served to a visitor.

Delivery

Content as a read API

The front ends are static sites that consume content. The CMS never handles a visitor request.

Config

One JSON file per theme

A theme declares its own title, admin icon, API exposure, editor mode and global-content behaviour. See the technique.

Local

Containerised dev environment

The whole stack — web server, database, admin tooling — comes up identically on any machine, which is the only way a platform gets handed over.

Claimed — and how to check it

  • Each theme configures itself through a single JSON file

    The config contract documented in the repository README.

  • The block editor is a per-theme flag that defaults off

    The same config contract.

  • Shared content is a platform capability a theme opts into

    The global content flag in the config contract.

Not claimed

  • No list of which sites run on it, no traffic figure, no uptime claim.
  • No host, endpoint or credential — none appears on this page.
  • No claim over WordPress itself. What is claimed is the configuration contract layered on top of it.
  • No security claim. It is internal infrastructure and was not audited as part of this work.

Read from the repository's own platform documentation. No host, endpoint, credential or site list appears on this page.