WEBSITESfor Normal People2026

Part II: Pick a Path (and build the thing)09

Chapter 09Path B

Path B: The site plus a CMS

4 min read, 1 cheat sheet

Do you actually need a CMS? Be honest.

Do I actually need a CMS?

Probably not. Be honest with yourself here.

A CMS (content management system) is an admin panel where you log in and edit pages yourself. WordPress is the famous one. It sounds essential. For most small sites it isn't anymore, because "change the hours on the contact page" is a ten-second prompt.

Get a CMS if:

  • Someone else edits the site and won't use AI (a staff member, a partner, your mum).
  • You're selling products and the catalogue changes a lot. Adding a product in a form beats prompting.
  • You publish often: a weekly blog, events, news, a portfolio you add to every month.

Skip it if you update the site a few times a year. Path A plus prompting is faster, and there's less to break.

Why not just WordPress?

Because you'd be signing up for the thing this guide exists to avoid: a separate host, a theme, a pile of plugins, and a monthly round of updates where one of them breaks the layout. WordPress was the right answer when a person had to build every page by hand. It isn't when an agent builds the site and you only need to edit the content.

Already on WordPress? Chapter 12 covers moving off it without losing your Google rankings. The agent can pull your pages, posts and images across into the new CMS.

What you're getting

Payload. It runs inside your site, on the same Cloudflare account. It needs Cloudflare's $5 Workers Paid plan, because a CMS does more work per page than the free plan allows. Still no second hosting bill, no WordPress plugins to update every week, no separate login system to get hacked.

Set up right, it looks like this:

  • Blocks. Pages are built from sections (a hero, a photo gallery, a price list, a testimonial, a call to action) that Opus designs once. You stack, reorder and fill them in. You can't break the design, because you're only editing the content inside it.
  • Live preview. Edit on the left, see the real page update on the right.
  • Click to edit. In the preview, click any section to jump straight to its fields.
  • Drafts. Work on a change without it going live.
  • Instant publish. Click Publish, the live site updates in seconds.
  • Your photos stored on Cloudflare R2, resized automatically.

That's the setup I use for client sites, and it's what this prompt asks for.

The CMS prompt

Use this instead of the Path A build prompt, not after it. Same brief from chapter 7 on top.

PromptCheat sheet 0148 lines
Above is my brief. Build my website WITH a CMS, so [who: me / my staff] can
edit content without code.

Everything in the Path A approach still applies: you're the designer, take a
real swing, write DESIGN.md first, no generic AI layouts, real copy from my
material, TODOs instead of invented facts.

CMS setup:
- Payload CMS (latest v3) inside the Next.js app, deployed to Cloudflare
  Workers with OpenNext. Database on Cloudflare D1, media on R2. Create the
  D1 database and R2 buckets yourself.
- Generate PAYLOAD_SECRET and save it to my vault. Set it as a Worker secret.
- Pages built from blocks. Design a block library for THIS site, not a
  generic one. Think: hero, rich text, media with text, gallery, feature
  grid, testimonials, FAQ, call to action, form, [plus site-specific ones:
  menu section, price list, team, process steps, before/after...]. Every block
  should look great with any reasonable content, handle missing images, and
  have a preview image in the admin so editors can see what they're picking.
- Collections for what actually repeats on this site: [e.g. menu items,
  services, products, projects, blog posts, testimonials, team members].
  Plus Media, Forms, Form submissions, Redirects, Users.
- Globals for Header, Footer and Site settings (contact details, hours,
  social links, analytics IDs).
- Drafts, and live preview on everything editable, with click-to-edit from
  the preview to the right field.
- Publishing is instant: pages are cached for speed, and publishing clears
  exactly the pages that changed.
- SEO fields (title, description, social image) on every page and post.
- Forms built in the CMS, protected with Turnstile, saved to the database
  before any email is sent (see chapter 8 of the guide I'm following).
- Keep the admin simple for a non-technical editor: hide fields they
  shouldn't touch, use plain labels and help text, sensible defaults.
- Seed the CMS with all the real content, so the site is complete on day one.

Ship it:
- Private GitHub repo. GitHub Actions deploys to a staging Worker on
  workers.dev on every push to main, and runs database migrations before
  deploying. Staging is noindex. Set CLOUDFLARE_DEPLOY_TOKEN and
  CLOUDFLARE_ACCOUNT_ID as Actions secrets from my vault, never the
  full-access token.
- Set up automatic daily D1 backups.
- Create an admin login for [EMAIL], with a strong random password saved to
  my vault as PAYLOAD_ADMIN_PASSWORD.
- Open the staging site and the admin yourself, check it all works,
  including editing a page and publishing it.

Send me the staging link, the admin link, a two-minute "how to edit your
site" guide written for [who], and your TODO list.

The rule from now on

You want to...Use
Change text, swap a photo, add a post or product, reorder sectionsThe CMS
A new kind of section, a design change, a new feature, a fixOpus

On a phone, swipe left and right to turn pages.