Content-only CMS — live in ~3 seconds
Your React code.Your client’s words.
Pagecraft is a headless CMS for the websites you build by hand. Clients edit text and photos in a dashboard a bakery owner can use — they never touch a colour, a font or a layout.
Fourteen days free · No card to start · Bring your own Next.js sites
How it works
You keep the design. They keep the words.
Three moving parts, and only one of them belongs to your client.
You build the sections
components/sections/
Your client fills them in
Sections on this page
The live site updates itself
Publish → live
~3s
Publish to live
Publish fires the site's revalidate webhook. The static page regenerates itself — no deploy, no developer.
9
Section types, out of the box
Hero, Features, Product Grid, Gallery, Testimonials, FAQ, CTA, Contact, Text Block. Adding your own is one file.
1
Instance, every client site
Each website is a project with its own key, its own library, and its own allowed sections.
What your client cannot do
- Change a colour, a font or a spacing
- Drag a layout apart or nest a container in a container
- Paste twelve typefaces in from a Word document
- Install a plugin that breaks the site at 11pm on a Friday
- Add a section type you never built for them
What they can do, on their phone, unsupervised
- Change today's headline and prices before opening
- Swap a photo from their camera roll
- Add a new page and have it appear in the menu
- Hide the testimonials section for a week
- Preview privately, then publish when they are happy
Blank required fields are tolerated while they type, and only checked the moment they press Publish — with the error shown on the field, in plain English.
Open the dashboard →For developers
Fifteen lines to wire a site up.
Install the SDK, map section types to your components, add a revalidate route. Type-safe end to end, no admin UI to maintain, and a CMS outage never fails your build.
- TypeScript types generated from your own field definitions
- ISR and on-demand revalidation, or plain runtime fetching
- Signed direct-to-CDN uploads, resized image URLs included
- Content exports as JSON — nothing about it is locked in
// one entry = one section type + its form
hero: {
label: "Hero",
description: "Big photo, headline, buttons",
fields: {
heading: text({ max: 140, required: true }),
subheading: para({ max: 260 }),
backgroundImage: image(),
buttons: list(
{ label: text({ max: 24 }), href: link() },
{ max: 3 }
),
},
}
// and on the website
<SectionRenderer
sections={page.sections}
components={{ hero: Hero, features: Features }}
/>Section types
Nine to start with. Add your own in one file.
A section type is a set of fields plus your React component. The dashboard reads the field definitions and builds the form itself — you never write an admin screen again.
packages/shared/src/registry.ts| Handing a client the keys | Pagecraft | WordPress | Site builders |
|---|---|---|---|
| Design stays exactly as you shipped it | Guaranteed | Until a plugin | No |
| You write the front end in React | Yes | Headless, with effort | No |
| Editing UI a non-technical owner enjoys | Built for it | Dashboard sprawl | Mixed |
| Security patching on your Friday night | None | Ongoing | None |
| Cost for one website | From $9 a month | Hosting, plugins, upkeep | Typically more |
“I used to charge for content edits and lose the client anyway. Now the bakery updates its own specials before 6am and my design still looks like my design.”
“I am not a computer person. I change the photo, press the blue button, and the website is right. That is the whole thing I needed.”
Questions developers ask first
Anything else, mail hello@pagecraft.dev and a human answers.
- No. Wrap the parts that change in section components and read them from the content API. Everything else stays as it is.
- The SDK reports an unreachable CMS separately from a real error, so your build can render a holding page instead of failing. Published pages already on your CDN keep serving.
- Yes. Each project has an allowed list, ticked in Settings. Anything unticked never appears in their Add section list, and the API rejects it too.
- The pages already published on their CDN keep serving — a billing problem never takes a live website down. Only editing stops, content stays readable for 30 days, and it exports as JSON at any time.
Do I have to rebuild my client's existing site?
What happens if Pagecraft is down when I deploy?
Can I stop a client using a section I did not build for them?
What happens to my client's site if they stop paying?
Ship the site.
Hand over the words.
Create an account, bring one client website, and see whether they ever email you a headline change again.