We build websites that teams love to edit
Blinkk is a web development agency. We design, build and run sites on Root.js for teams that need to move fast.
Guide
Modeling content with templates
6 min read · Updated March 4, 2026
Every page on a Root.js site is a stack of templates: small, self-contained modules that pair a Preact component with a CMS schema. Developers decide what a module can do. Editors decide where it goes and what it says.
Start with the component
Write the component the way you would anywhere else, then describe its props as fields. The CMS generates the editing UI, validation and TypeScript types from that single schema file.
-
One folder per template: schema, presets and component side by side
-
Types are generated with
pnpm types, so props never drift -
Presets give editors a head start with realistic content
Ship it to editors
New folders in templates/ are picked up automatically. There is no registry to update and no deploy step between a developer merging a module and an editor using it.
export default schema.define({ name: 'TemplateQuote', fields: [ schema.string({id: 'quote', translate: true}), schema.string({id: 'author'}), ],});
That is the whole workflow. Read on for tips on naming fields, choosing defaults and writing presets that sell the module.
Customer results
Launch days without the launch-day scramble
Scheduled releases, shareable previews and instant rollbacks take the risk out of going live.
- Faster publishing
- 4×
- Median time from draft to live, compared with a legacy CMS.
- Time to first byte
- <50ms
- Static pages served from the edge.
- Locales shipped
- 42
- From a single source of truth.
- Uptime
- 99.99%
- Over the last twelve months.
Leadership
Root gave us the speed of a static site and the flexibility of a real CMS. It is the first platform both our engineers and our editors actually like.
See how this page was built
Every section here is a module. Open the CMS to edit this page, or browse the module gallery.