← Our stack

Sanity CMS development that makes your website easier to update.

Your team should be able to update your website without calling a developer. We set up Sanity around the content you manage, so everyday changes are easier to make.

Tell us about your website → sanity.io ↗
Built around the content you work with

Whether you need a new website, help with an existing Sanity setup, or a move from another CMS, we start with what your team needs to publish. Articles, team profiles, service pages, and project stories need different information. We organize the editing tools around those needs, with clear fields for text, images, links, and search descriptions.

Your content tools should fit the way your team works.

An editing setup your team can use

Your team can make routine updates within the content types we build. New layouts, integrations, or kinds of content may still need a developer. We make that distinction clear during planning and training.

What you keep after launch

Sanity stores content in a dataset inside a Sanity project, apart from the website code. The Studio and its field definitions are code, so they can be kept in Git with the rest of the project; on this site they sit in a studio folder beside the website. We record where the production code, infrastructure, accounts, data, documentation, and operating responsibility live after launch. On the behavioral health network build, each location's Next.js app reads from one Sanity backend, and all infrastructure was handed to client-owned accounts.

Moving content into Sanity

We review your existing pages, decide how they should be organized, and plan how to move the text, images, and metadata. We preserve URLs where practical and map redirects where addresses change. Before launch, we check the migrated content, forms, links, and key visitor journeys. Search visibility can fluctuate during a move, so monitoring and a recovery plan are part of the work.

Connecting Sanity to Next.js or SvelteKit

Sanity stores content separately from the website that displays it. We use its API and GROQ queries to retrieve the fields each page needs, then render rich text through Portable Text components. Publishing can trigger a rebuild, refresh cached pages, or supply fresh content on a request. We choose the approach for the project and configure visual preview when it is part of the agreed scope.

Drafts, preview, and publishing

In Sanity, an edit stays a draft until someone publishes it. Our website reads published content only, so a visitor never sees a draft. Our own Studio runs two tools: Structure, where editors create and edit records, and Vision, where developers test GROQ queries against the dataset. Blog and case-study pages are generated when the site builds, and a published change appears after the next build. A client project can be set up differently. When a team needs to see drafts inside its own page layout before publishing, we scope visual preview for that website and confirm which content types and layouts it covers.

How we use Sanity on this website

The ComCreate blog uses Sanity to manage articles, authors, categories, and search descriptions, while each article's cover is drawn by the site's own code from the article's title, categories, and publication order rather than taken from an uploaded image. Our website templates turn those records into the pages you read here. An article's title and cover appear on the blog listing, while its author record supplies the byline and profile link. This site's article pages are generated during a build, so updating a published page includes rebuilding the site.

An article record and an author record feed the website build, which produces the blog, article pages, and bylines.
An explanation of our current blog publishing setup. Published content reaches these pages through a website build.

What an article record holds

Each article is one record in our Studio, split into two tabs. Content holds the title, a URL slug the editor can generate from the title, an author chosen from the author records, categories, a publication date, a short excerpt, and the body. SEO & keywords holds an optional search title of up to 60 characters, a meta description of up to 160, target keywords, and optional questions with answers. An empty search title falls back to the article title plus the blog name, and an empty description falls back to the excerpt. Keywords go into the article's BlogPosting structured data. Answers appear under Frequently asked questions on the article and are published as FAQPage structured data. Articles that share a category fill the Read next list, up to three, newest first. Each author with a published article gets a profile page that lists their articles.

Image descriptions, captions, and sources

Images placed inside an article carry four extra fields: an image description for screen readers, a visible caption, a source URL, and a screenshot capture date. The Studio asks editors to describe the information a reader needs from the image and to leave out keywords and the article title. When an image has no description, the Studio shows a warning unless the editor marks the image decorative. A warning does not block publishing, so older articles stay editable while their images are filled in. Under each image, the page shows the caption, a View source link, and the capture date when those fields are set. Sanity's image service supplies each image in several widths, and the browser picks the one that fits the screen.

Case studies are Sanity records too

The case studies on this site are also Sanity records. Their fields are grouped into Identity, Hero, Editorial, Metrics, and Brand & SEO. The editorial body is a list of sections the editor can reorder. Each section has a label, an optional subhead, body copy, and an optional screenshot with alt text, shown bare or inside a browser or phone frame at a chosen aspect ratio. Metrics holds the stat rows, before-and-after tables, charts, testimonials, and press mentions. Brand colours are stored as plain CSS values and set the page's accent and the colour zones it moves through as you scroll.

Published packages for local businesses

A local business that wants a new website with published package pricing can start with small business web design.

How we do it

What your Sanity project includes

  1. Plan the content

    Map the articles, profiles, pages, and reusable content your team needs to manage.

  2. Build the editing tools

    Create fields, validation, and permissions suited to that content.

  3. Connect the website

    Build and test the templates that display the content on your site.

  4. Test publishing and preview

    Agree how edits reach the live site and which preview options the project includes.

  5. Train your team

    Document the setup and work through representative editing and publishing tasks together.

Where we use it

Articles and authors

Separate records for articles and authors keep bylines, biographies, and profile links consistent.

Images and search descriptions

Editors can manage in-article images, image descriptions, and search descriptions alongside the article. Each article's cover is drawn by the site's own code rather than taken from an uploaded image.

Reusable content

Services, profiles, and project stories can be organized into content types that match the pages you need.

Case study pages

Each case study on this site is a record with reorderable sections, framed screenshots, metrics, and brand colours.

One backend for several sites

Per-location Next.js apps in one monorepo read from a single Sanity backend.

View case study

Questions and answers

Question-and-answer fields on an article become its FAQ section and its FAQPage structured data.

Powers these services

Questions

Sanity FAQs

Get started

Let's talk about
your next build.