Use cases

One platform, every kind of page

From a single landing page to a global site in forty languages, Root scales with your content.

Marketing sites

Give marketers a library of on-brand modules and let them launch campaigns without a ticket.

See templates
collections/Pages.schema.ts
export default schema.collection({  name: 'Pages',  url: '/[...slug]',  preview: {title: 'meta.title'},  fields: [    // Editors stack modules from the design system.    schema.array({      id: 'modules',      of: schema.oneOf({types: schema.glob('/templates/*/*.schema.ts')}),    }),  ],});

Global launches

Translate every field, preview each locale and publish all markets together with a scheduled release.

Learn about localization
root.config.ts
export default defineConfig({  i18n: {    locales: ['en', 'de', 'fr', 'ja', 'es-419'],    // /de/pricing/, /ja/pricing/, …    urlFormat: '/{locale}/{path}',  },});

Content-driven apps

Fetch published content from any route or API. Render statically, or on request with SSR.

Read the docs
routes/blog/[slug].tsx
export async function getStaticProps(ctx) {  const cms = new RootCMSClient(ctx.rootConfig);  // Published docs only; drafts show in preview.  const post = await cms.getDoc('BlogPosts', ctx.params.slug, {mode: 'published'});  return {props: {post}};}