Engineering
Why we built our own marketing platform
On the trade-offs behind rolling our own Astro-based stack instead of reaching for an off-the-shelf CMS.
Every few months someone asks the obvious question: why not just use an existing CMS? It’s a fair challenge, and one we took seriously before writing a single line of code. Here’s the short version of how we landed where we did.
The trouble with one-size-fits-all
Off-the-shelf platforms are excellent at the 80% case. The remaining 20% — multi-brand theming, typed content contracts, AI-assisted authoring, predictable performance budgets — is exactly where most of our clients live. We kept hitting the same wall:
- Content models would balloon into a thicket of optional fields.
- Brand tokens would drift from the design system within a release or two.
- Editorial workflows would devolve into copy-pasting between tools.
We didn’t want a platform that could do everything. We wanted one that did the right things by default.
What we chose instead
We built on top of a small, opinionated set of tools:
- Astro for content-first rendering and zero-JS-by-default pages.
- Zod schemas as the single source of truth for every content type.
- Design tokens as plain CSS variables, generated from a per-site
tokens.ts. - A shared design system that every site consumes — no forks, no drift.
The result is a stack that feels boring in the best possible way. Adding a new site is a matter of supplying tokens and content; adding a new content type means writing a schema and a template, then watching it appear consistently across every property.
What’s coming
Next on the roadmap: a richer landing-page builder, first-class A/B testing primitives, and a content authoring assistant that respects our schemas instead of fighting them. We’ll write up each piece as it ships.
- #astro
- #architecture
- #design-systems
Share this post
Related reading
-
Engineering · Apr 24, 2026 · 5 min
Performance budgets that stick
How we keep Lighthouse scores above 95 in production by treating performance as a build-time gate instead of a quarterly cleanup project.
-
Process · Apr 26, 2026 · 4 min
Schemas before content
Why we write the Zod schema before we write the first paragraph — and how that one rule has saved us from years of cleanup work.
-
Updates · Apr 20, 2026
Welcome to Site A
A short intro to what this site is, who it's for, and where we're headed next.