Part II: Pick a Path (and build the thing)09
Chapter 09Path B
Path B: The site plus a CMS
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.
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 sections | The CMS |
| A new kind of section, a design change, a new feature, a fix | Opus |
On a phone, swipe left and right to turn pages.