For the developer who builds it and the owner who runs it
Your code.Their words.
A developer builds the site in React. The owner changes the words and photos from their phone and presses one button. The design stays exactly as it was shipped, and nobody has to email anybody.
How it works
Your code in. Their words out.
Build the sections once. Your client edits only the text and photos, then presses Publish. The live site updates itself, and the design, layout and colour never change.
// your React components
const sections = {
hero: Hero,
gallery: Gallery,
}The developer builds it once
Section components in your own React project. Layout, colour and type live in your code.
Headline
The owner edits the words
A dashboard you can use on your phone. Plain fields for text and photos, nothing that can break the design.
The site updates itself
One tap on Publish regenerates the live page in seconds, exactly as it was built.
For site owners
Change the words. Press Publish. Done.
You do not need to be a computer person. Your website is a short list of sections, each with a few plain fields, and the only button that matters is the blue one.
- From your phone
Update today's specials or opening hours from the counter, before the doors open.
- Nothing breaks
You change text and photos. Colours, fonts and layout are locked to the design you paid for.
- Preview, then publish
See it privately first. One tap on Publish and the live site updates in seconds.
- Nobody to wait for
Add a page, hide a section, swap a photo — without emailing anyone or paying for edits.
~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.
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, so you never write an admin screen again.
packages/shared/src/registry.tsHeadline, photo and up to three buttons.
Short reasons to choose them, with bullets.
Products or services with photos and prices.
Photos with captions and alt text.
Quotes, names and roles.
Questions and answers that open on click.
A short band with one clear button.
Address, hours, map and a message form.
Paragraphs for an About or Policy page.
FAQ
Questions owners and developers ask first.
Anything else, mail hello@mypagecraft.com and a human answers, usually the same day.
No. You see plain fields — a headline, a paragraph, a photo — and a Publish button. Colours, fonts and layout are not yours to break, so there is nothing to learn and nothing to be careful about.
Nothing goes live until you press Publish, and you can preview privately first. Change your mind and Discard puts back exactly what the live site shows now.
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.
01I run the website, not build it. Do I need to know any code?
02What if I make a mistake?
03Do I have to rebuild my client's existing site?
04What happens if Pagecraft is down when I deploy?
05Can I stop a client using a section I did not build for them?
06What happens to my client's site if they stop paying?
One site.
Two happy people.
Developers: wire up one site in an afternoon. Owners: change a headline tonight without asking anyone. Either way, start here.