Screens
Key engineering
Under the hood
Headless: a read-mostly public API with a statically generated reader in front of it, and the editorial application as a separate client. The migration tooling was built as a one-way pipeline and deliberately kept disposable.
A canonical content model the legacy archive was mapped onto, rather than the old schema carried forward. Media re-processed into object storage and served from the edge.
Pages generated ahead of time and revalidated, served from the edge. Uploads and media transforms run as their own edge workers, keeping the API out of the media path.
Two decades of accumulated search authority was the constraint that could not be undone: every old address had to keep resolving. An archive that size is messy in ways that only appear at volume, so the migration was rehearsed repeatedly and validated against the live site before it became the live site.
Stack
What it took
- Search ranking was the hard constraint. Two decades of accumulated authority meant every old address had to keep working and every page stay legible to search engines — the part of a move like this where a mistake is expensive and slow to undo.
- Twenty years of archive is its own problem. Old content is messy, inconsistent and full of edge cases; most of the effort went into making it clean enough to build on, with the migration tooling deliberately kept disposable.
- The editorial tool outgrew the project. It was separated from the site it was built for, so it can serve another publisher without a fork.
- Readers feel the result. Pages are generated ahead of time and served from the edge, so the site is fast everywhere — including on the phones most of its readers use.
