For freelance developers and small studios
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
~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.
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/
Hero.tsxFeatures.tsxProductGrid.tsx…six moreOne React component per section type, in your own Next.js project. Tailwind, CSS modules, whatever you already use. Nothing about layout or colour ever comes from the CMS.
Your client fills them in
Main BannerWhy Choose UsOur BreadsAdd, remove, reorder, hide, type. Plain-English labels, character counts, one clear Publish button. No colour pickers, no fonts, no drag-and-drop canvas.
The live site updates itself
PublishPOST /revalidaterosewaterbakehouse.com regeneratedPublish copies the draft over the live content and calls your revalidate webhook. Static-speed pages that stay current. Pages added after your last deploy still work.
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 →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- HeroHeadline, photo and up to three buttons.
- FeaturesShort reasons to choose them, with bullets.
- Product GridProducts or services with photos and prices.
- GalleryPhotos with captions and alt text.
- TestimonialsQuotes, names and roles.
- FAQQuestions and answers that open on click.
- Call to ActionA short band with one clear button.
- ContactAddress, hours, map and a message form.
- Text BlockParagraphs for an About or Policy page.
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 }}
/>| 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.
- Do I have to rebuild my client's existing site?
- No. Wrap the parts that change in section components and read them from the content API. Everything else stays as it is.
- What happens if Pagecraft is down when I deploy?
- 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.
- Can I stop a client using a section I did not build for them?
- 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.
- What happens to my client's site if they stop paying?
- 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.
Stop being your client’s copy editor.
Create an account, bring one client website, and see whether they ever email you a headline change again.