Feature split
Section header, then a checklist of features beside an image, screenshot or code sample.
Editing
Edit the page, not a form
Root.js puts a live preview next to every field, so editors see exactly what will ship before they publish.
-
Live preview. Changes render instantly in a side-by-side preview of the real page.
-
Modules, not markup. Add, reorder and configure sections from your design system.
-
AI assist. Draft headlines, tighten copy and fill alt text in one click.
-
Version history. Compare any two saves and restore with confidence.
Developers
Any component can become a module
Describe fields in a schema file. Root.js generates the editor UI and TypeScript types.
-
Plain TSX. Modules are regular Preact components with typed props.
-
Presets included. Ship prefilled variants so editors never start from blank.
-
Static or SSR. Render at build time or per request, route by route.
import {schema} from '@blinkk/root-cms'; // Fields editors fill in for this module.export default schema.define({ name: 'Quote', fields: [ schema.string({id: 'quote', translate: true}), schema.string({id: 'author'}), schema.image({id: 'avatar'}), ],});
Performance
Fast by default, everywhere
Pages render on the server and ship zero JavaScript unless a module asks for it.
-
Zero JS by default. Interactivity is opt-in, one island at a time.
-
Edge cached. Static pages are served from a global CDN.
-
Core Web Vitals. Green scores out of the box, without tuning.