Mercury Local is the platform and services unit The Charlotte Mercury started to build and run its publications: The Charlotte Mercury itself, The Farmington Mercury and the neighborhood papers. In March 2026 we stopped renting our publishing technology and built our own: one database, one codebase serving every publication, and our own email, images, analytics and newsroom desk. This series, written by the publisher, is the record of what that means, one piece of the stack at a time, with the measured numbers and the days it went wrong.
The stack, in one paragraph
Postgres, hosted by Supabase, holds everything: every article, page, person, transcript, source document and image, with permission rules on every row. A Next.js site on Vercel reads the domain a reader typed and serves the right publication. Images live in storage with per-publication permissions. Email goes through one path on Resend from each publication's own domain. Analytics is self-hosted on its own machine. The newsroom desk, Atlas Command, is a window into the same database. Sixty-odd checks run every night. Everything is mirrored off-site. All of it was written by an AI and decided by one publisher.
The series
- Three WordPress blogs and a rented app. Where we started, and why it could not stay there.
- Two weeks in March. 813 articles, 7,124 images, one platform.
- The day we deleted the media server. 1,006 images repointed in one sitting.
- Email we own. One send path for every domain, nothing sold to anyone.
- The newsroom tool we built for ourselves. A desk shaped like reporting.
- Analytics without a black box. We self-hosted. Ten days later it took every site down.
- Every article carries its receipts. The fact ledger behind every story.
- The people, places and bodies behind the news. Thousands of profiles, built from the coverage.
- Half a second, found in the layout. 542 milliseconds to 208.
- The site checks itself every night. The first run found six problems nobody knew about.
- Backups we can prove. A green light that lied, and a restore drill.
- The database says no. Rules that fire whether or not anyone remembers.
- One database is the whole company. Everything in one place, with one set of rules.
- Sixteen publications, one codebase. A new publication is a row and a DNS record.
- What AI actually did. What I decided, what the machine built, what it got wrong.
- Why we did not rent it. A publication as a source, not a destination.