Web and growthBuild and operate

Many branded websites from one CMS

One CMS and one codebase serving five branded websites, each with its own pages, look and client admin, updated in a single release.

Line-art diagram of one content management system feeding four differently branded websites

Industry: agencies and multi-brand businesses · Client: our own platform · Proof: live in production

The situation

Running several brands usually means several websites, several hosting bills and several codebases to keep patched. Every fix has to be made more than once, designs drift apart and a small business client editing their own site can break what the agency built.

The goal was to run a growing set of branded sites, our own and our clients', with the cost and effort of running one, without any site looking like a template of another.

What we built

We built one Wagtail CMS that serves many independent websites from a single codebase and database. Each site is found by its domain and has its own pages, settings, media and look, while every site shares the same tested building blocks and gets every improvement in one release.

A new site is described in data: its domain, its pages, its menus and its look. The platform creates it on the next deploy and keeps it in step from then on. Once a client takes over their own content, the platform stops writing to it, so their edits are never lost to a release. Each site has its own media library and its own admin access, so an editor on one site cannot see or change another. Search basics are built in for every site: its own sitemap, robots rules, redirects and structured data.

The pieces we built:

  • Multi-site resolution by hostname, with a private page tree, settings and media library per site
  • Sites set up from data, so a new site is a configuration, not a new codebase
  • A rule that a client's own edits are never overwritten by a release
  • Per-site skins on one design-token system, with a test that stops designs drifting
  • A library of about 30 page blocks rendered by a Next.js frontend, with draft preview
  • A scoped admin where a client edits only their own pages, menus, colours and SEO settings
  • Per-site sitemaps, redirects and honest structured data

How it works

Add the domain

A new site is set up from data on the shared platform.

Choose the look

Its skin maps the shared design tokens to the brand.

Build and hand over

Editors build pages from shared blocks, then the client edits only their own site.

Release once

Every improvement reaches every site in one deploy.

The result

Five branded sites now run from one codebase: our own studio-facing site, a small-business studio, a local trades site, a client shop and a personal site. A fix or feature is built once and reaches all of them, and each client keeps full control of their own content.

Hosting, security patches and monitoring are paid for once, and a new brand or client site starts from parts that already exist and are already tested.

Built with

Python, Django, Wagtail, Next.js, React, Tailwind CSS, PostgreSQL and Docker, behind a CDN.

Want this for your clients?

Start with a free check of one client site.