Publishing and environments
dev, uat and prod — how content moves, and what points the front door where.
Abstract illustration of a diagonal stack of blog entries
Content lives in a per-environment database. How publishing snapshots an entry, how promote moves it up, and what default_slug and the status key control.

Content lives in a database, not in the code. There are three copies of that database — one per environment — and content moves between them deliberately.

dev, uat, prod

  • dev is where content is authored and where drafts are visible. Builds here show the working copy of every entry.
  • uat is for review. It shows only published content.
  • prod is the live site. Same rule: published content only.

How content moves

Editing happens in dev. When an entry is ready it is published, which snapshots its current state. A promote step copies published entries from one environment up to the next. The copy is per-app, so promoting this site never touches another site sharing the same table.

What points the front door

Two things decide what a visitor sees first:

  • default_slug — the page that / redirects to. It is a config value, not a code change.
  • the status key — a small per-environment switch that puts the site into coming-soon, maintenance or live mode at the edge, before the page is even served.

The takeaway

A deploy ships code. Publishing and promoting ship content. They are separate on purpose: you can fix a typo without a release, and you can release without touching a word of copy.