Every page, built from blocks

Pick a block, fill in the fields and drag it into place. Publish, and the page is live.

See every block
  • Halbrisk logo
  • Vaskeli logo
  • Ulvaro logo
  • Mirteno logo
  • Kestrino logo
  • Torvenna logo

Everything a marketing site needs

Each block has its own fields, so editors fill in content instead of fighting a layout.

Blocks in any order

Add, remove and drag blocks. Every one holds up next to any other.

Options per block

Layouts, backgrounds and anchors, set in the Options tab.

SEO per page

Titles and descriptions per page, with fallbacks from settings.

Typed end to end

Schemas, queries and components share one set of types.

Live on publish

Publish in the Studio and the page updates on the next request.

Easy to extend

A new block is one folder and one line in each registry.

Links that resolve

Point a button at a page and the URL follows when its slug changes.

Settings in one place

Navigation, footer and defaults live in a single document.

Pages are a stack of blocks, nothing more

There are no templates to outgrow. A page is an ordered list of blocks, and each block knows how to look next to the others.

Editors build a new landing page in the time it takes to write the copy, and nobody waits on a developer to move a section.

  • Reorder by dragging

  • Required fields checked

  • Images with hotspots

  • Reuse across pages

Editors in control, developers in the loop

Every option is a field with a sensible default, so a page always looks finished.

Layouts

Switch a hero or a feature block to another layout without losing content.

Backgrounds

Set a block on light or dark, and every token inside it follows.

Anchors

Give a block an anchor and link straight to it from anywhere.

Roles

Sanity roles decide who can publish and who can only draft.

Halbrisk logo

Halbrisk

Halbrisk launched twelve landing pages in their first month on blocks.

Read the story

Add a block in three files

A schema for the Studio, a query for the data and a component for the page. Register it once and it shows up everywhere.

export const banner = defineType({
  name: "banner",
  title: "Banner",
  type: "object",
  fields: [
    defineField({ name: "heading", type: "string" }),
    defineField({ name: "link", type: "link" }),
  ],
});

The schema decides what editors see in the Studio.

  • Validation runs before anyone can publish.

  • Shared fields like link and figure come for free.

  • Groups keep content and options apart.

Restyle it once, every block follows

Colours, fonts and radii live in tokens. Change one file and the whole site takes the new look.

Read the docs

Tokens for colour

Every block reads the same colour tokens.

One type scale

Headings and text come from a single Text component.

Shared fields

Links, images and options are defined once.

Plain Astro

Blocks are Astro components you can read and change.

Light and dark

Any block switches tone and its colours follow.

One theme file

Fonts, radii and shadows are set in one place.

Built for the long run

Most site templates stop at the first launch. Blocks keep working as the site grows.

New pages without code

Editors compose pages from blocks in the Studio.

One design system

Every block reads the same tokens and type scale.

Typed content

Schemas, queries and components share their types.

Live on publish

Changes go out without a rebuild or a deploy.

What teams say a month in

  • Halbrisk logo

    "The first week we moved the pages. By the fourth, the marketing team had built more of them than we ever had."

    Lucía Romero in a charcoal sweater against a cream backdrop

    Lucía Romero

    Head of web, Halbrisk

  • Vaskeli logo

    "Writers open the Studio, pick a block and fill in the fields. I have not been asked where something goes in weeks."

    Erik Lindqvist in a white shirt against a cream backdrop

    Erik Lindqvist

    Content lead, Vaskeli

  • Mirteno logo

    "We added a block on Tuesday and every page could use it by Wednesday, with its types already in place."

    Oliver Bennett in a mauve sweater against a warm backdrop

    Oliver Bennett

    Engineer, Mirteno

  • Torvenna logo

    "Campaign pages used to wait on a developer. Now they wait on the copy, which is how it should be."

    Carmen Ruiz in a grey blazer against a cream backdrop

    Carmen Ruiz

    Growth, Torvenna

1 of 4

Pricing

Start free and pay only for what you add. No minimums and no annual contract.

Pages

  • Up to 20 pages

    $0

  • Each extra 10 pages

    $5

    / month

  • Custom domain

    $0

Editors

  • Two editors

    $0

  • Each extra editor

    $8

    / month

  • Custom roles

    $15

    / month

Support

  • Email support

    $0

  • Replies within four hours

    $49

    / month

  • Migration from another CMS

    $400

    / project