Case study · Platform architecture

One static platform, many brands

How a 19-brand WordPress multisite was replaced with a single static, own-the-stack platform on AWS — cheap, fast, and nothing to hack. brand names & data omitted

← back to tomwood.dev

How it works, end to end

1 · Content

Structured JSON, edited by trained staff

Each brand is a folder of JSON (identity, team, testimonials). No database, no CMS to patch — content is data, versioned in git.

2 · Build

Next.js static export

One codebase renders every brand at build time into plain HTML/CSS/JS — hundreds of pages, zero servers. A new brand is a new JSON folder, not new code.

3 · Host

S3 + CloudFront

Static output lives in one S3 bucket, served worldwide through the CloudFront CDN over HTTPS. Runs for a few dollars a month.

4 · Route

Per-domain host-router (CloudFront Function)

A tiny function runs at the edge on every request: it reads the incoming domain, maps it to that brand's subtree in the bucket, and rewrites the path. Shared assets stay at the root. One bucket, one distribution — many independent branded sites.

brand-a.combrand-b.com brand-c.com… → correct subtree
5a · Leads

Lambda + DynamoDB

Every form (contact, apply, careers, loan-officer) POSTs to a Lambda Function URL that writes the lead to DynamoDB — tagged by brand and form type. Own-stack, no third-party form service.

5b · Rates

Client-side tools

Mortgage calculators and a rates ticker run entirely in the browser — no backend to run or secure.

⚙ Everything above is Infrastructure-as-Code (CloudFormation). Bucket, distribution, host-router, Lambda, DynamoDB, IAM — all defined in templates with an environment switch, so test and production deploy from the same source and tear down clean. No hand-clicking the console.

Why this beats the alternatives

vs. WordPress multisite

No PHP, MySQL, or ~100 plugins to patch. Nothing dynamic to exploit; the attack surface is basically "static files behind a CDN."

vs. managed WordPress (WP Engine)

Still PHP/MySQL/plugins underneath — the wrong architecture, just someone else's problem to run.

vs. AWS Amplify

Right class (static) but a managed abstraction over S3/CloudFront — lock-in and extra cost. We own the raw primitives.

The payoff

A stack you fully own: pennies to run, fast everywhere, and reproducible from templates. Cheap, fast, nothing to hack.