Show what the product does

Grids, split lists, image features, phones, steps, benefits, code tabs and integrations.

  • 11 layouts


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


Choose exactly who sees it

Every rule is a line anyone on the team can read, and percentages stay sticky per person, so nobody flips between the old checkout and the new one.

  1. 1

    Your own team first

    Ship to everyone with a company email and try it on real data.

  2. 2

    Then a tenth of customers

    Watch errors and conversion for a day before going further.

  3. 3

    Then everyone

    Raise it to 100% and remove the flag when the dust settles.


Turn it off before anyone notices

When a release goes wrong, switch the flag off from the dashboard or the terminal. No deploy, no restart, and if the network drops your app keeps the last rules it had.

0.4 s

From the switch in the dashboard to every server running your app.


Old flags tidy themselves away

Flags that have not changed in months are marked for you. Find every place one is used, remove it from the code and archive it in two clicks.

  • Anything unchanged for 90 days gets a stale tag

  • The CLI lists every file and line that still reads it

  • Archived flags keep their history and come back in a click

  • A Monday email lists the flags ready to go


No cookies, so no banner

Visits are counted without storing anything on the device. There is nothing to ask consent for, and nothing to put in front of your page.

1.8 KB

The whole script, loaded after everything else on the page.


Your server, your data

Three containers on any machine with Docker. Your visitors' data stays where you put it, and nobody else ever sees it.

  1. 1

    Download the compose file

    The app, its database and a worker, in one file you can read.

  2. 2

    Run docker compose up

    Migrations run on their own, and updates are one pull away.

  3. 3

    Add the script to your site

    One line in the head, and the first visit shows up live.


Your first pull request, reviewed within a day

A maintainer looks at every pull request within a working day. The checks tell you what to fix before anyone has to, and every release note names the people who shipped it.

I opened a small fix on a Friday night and had a friendly review by Saturday morning. Three releases later I help review the queue myself.

Javier Ortega in a grey t-shirt against a grey backdrop

Javier Ortega

Contributor since 2023


It reads where your team already writes

Connect the places your answers already live. The assistant keeps up as they change, and nothing is used to train anyone else's model.


A person steps in when it matters

Billing mistakes, upset customers and anything it is not sure about go straight to your team, with the whole conversation attached.

The handovers are the best part. By the time a chat reaches me I know the question, what it already tried and which article it read.

Chiara Bianchi in glasses and a white shirt against a grey backdrop

Chiara Bianchi

Head of support


See what your docs are missing

Every question it could not answer lands in one list, sorted by how often it was asked. Write the article once and the assistant uses it the same minute.

Top questions

What people ask most this week, in their own words.

Gaps marked

Questions with no answer in your docs, flagged for you.

Fixed in minutes

Publish the article and the next answer already uses it.

A weekly report

Answered, handed over and missing, in one email on Monday.


See a typo? Click it

Click any text on the live page and its field opens in the Studio. Fix it, check the draft on the real page and publish when it reads right.

We used to wait two days for a developer to change a price. Now I fix it myself in a minute, and I can see exactly how it looks first.

Sofia Nyström in a linen shirt against a wooden wall

Sofia Nyström

Marketing lead


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 around your week

Five things the app does well, and nothing it makes you do.

9:41

Three ways to look at your time

Switch views with a swipe. Every task stays where you left it.

9:41
Placeholder image, replace with your own

Day

The hours ahead, with your calendar events between the tasks.

9:41
Placeholder image, replace with your own

Week

Seven days side by side, and the time each one needs.

9:41
Placeholder image, replace with your own

Month

The busy weeks and the quiet ones, so you can plan ahead.


Everything a planner needs, and no more

Six small things that make the week easier to keep.

9:41
Placeholder image, replace with your own
Your week at a glance

Seven days on one screen, with the time each task needs added up per day.

Drag to plan

Move a task to another day with one finger. There is nothing else to set.

Done is done

Tick a task and it leaves the list, with a quiet record of what you finished.

Repeats on its own

Weekly and monthly tasks come back by themselves, on the day you pick.

Shared lists

Plan the house or a trip together, and everyone sees changes as they happen.

Private by default

Your plans stay on your phone and in your own cloud account.


From a fresh clone to a published page in minutes

  1. 01

    Install

    Clone the repo and install once. The site and the Studio share one workspace.

    pnpm install
  2. 02

    Connect your project

    Add your Sanity project ID to both apps. Nothing else to configure.

    SANITY_PROJECT_ID="your-project-id"
  3. 03

    Seed and start

    Load the demo pages, then open the site and the Studio side by side.

    pnpm seed
    pnpm dev

How a project runs

Four stages and about ten weeks, from the first workshop to the day you go live.

  1. 01

    Workshop

    Week 1

    Two half days with your team to agree what the brand stands for and who it is for.

  2. 02

    Design

    Weeks 2 to 5

    The identity and the key pages, shown every week so nothing comes as a surprise.

  3. 03

    Build

    Weeks 6 to 9

    The site, built in house on blocks, with your copy and your photos in place.

  4. 04

    Launch

    Week 10

    We train your editors, go live together and stay on call for the first month.


Ask it what your customers ask you

A few of the questions it answered this week, word for word.

  • Can I move my plan to another workspace?

    Account

  • Why was I charged twice in March?

    Billing

  • How do I invite someone without giving them admin?

    Team

  • Does the export include deleted items?

    Data

  • Is there a discount for schools?

    Pricing

  • How long do you keep my files after I cancel?

    Privacy


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.


Works with the tools you already use

Every block is plain Astro and Tailwind, so the rest of your stack stays yours.

  • Astro

    Framework
    pnpm add astro
  • Sanity

    Studio
    pnpm add sanity
  • Tailwind CSS

    Styling
    pnpm add tailwindcss
  • Visual Editing

    Preview
    pnpm add @sanity/visual-editing
  • Node adapter

    Server
    pnpm add @astrojs/node
  • TypeScript

    Types
    pnpm add -D typescript