For U.S. federal, state and local agenciesHow we work with government
CMS
Structured content that lives independently from the pages that use it.
Most website tools make content part of the page it appears on. SnowBlock separates the two — a testimonial, article, location or staff profile exists as its own document, referenced by any page that needs it.
Content
Every piece of content is a document of its own — a person, a testimonial, a location — with the same fields every time. Write it once, and every page showing it is correct.
Decide what a staff profile needs — name, role, photo, biography — and that becomes the form everyone sees. Text, dates, numbers, images, files, links, lists, and groups of fields that repeat. Add fixed sets of choices so people pick rather than type, and help text they read while writing.
5 fields · 96 documents · version 4
Drag from the palette, or drop between fields to choose a position.
Components
A component is a piece of the page — a hero, a card, a quote, a list of people. Say which field feeds the headline, the image, the button, and every page using it follows.
Choose what a component draws on, then say which field becomes the headline, which the image, which the link. From then on it fills itself from whatever document a page points it at, and you never paste the same text into two places.
1 section bound · 4 mappable nodes
Pages
A page is components in an order, drawing on your content. Add a section, move it, swap it, and see the result against the real site before anyone else does.
Build a page by adding sections from the library and putting them in the order you want. What you can place, and what you can type into it, is already settled by the content behind it — so a page cannot end up in a state the site cannot render.
Landing page · 4 sections
SECTIONS
ADD A SECTION
Content types
Define it once, and every author who writes one gets the same form. Consistency stops being something you police in review and becomes something the system provides.
Text, long text, numbers, dates, yes/no, images, files, links, lists, and groups of fields that repeat.
Fixed sets of choices so authors pick rather than type. Required fields, and the help text they see while writing.
File them in folders, search them, and duplicate one as the start of another.
Which on-screen section renders this type, and which field feeds the headline, the image, the button.
Every testimonial, staff profile, article or location exists in its own right. Pages use those documents; they do not own them.
The same content model is readable as TypeScript and as schema JSON, so the content model and the application code work from one definition.
Working in it
The Studio behaves the same way across content types, documents and pages. Drafts stay drafts, changes stay traceable, and previews use real content.
Every language
Work on two languages side by side. Each translatable field stays next to its source, so translators do not move between screens or guess what they are translating.
Cymraeg is at full parity — the same 214 pages, not a translated subset.
Before it is live
Pages, documents and the theme preview against your real site as you work, not against a mock-up. The live preview shows the rendered section beside the fields that produced it.
Fields
On the page
“Two weeks, not two…”
J. Okafor
Head of Digital
The real section, rendered from what you typed — not an approximation of it.
Over time
Content types, documents and pages all retain their versions. Compare a version against what is live, and restore it — into a draft, never straight onto the site.
Restoring an old version lands in a draft for review — never straight onto the live site.
These are not separate features. They are how every screen behaves, which is why the Studio can be handed to someone new without a training day.
Content is stored as structured information rather than as a finished page. The same document can power the website, an app, or another system — without rebuilding the content from rendered HTML.
Content types are defined in an open standard. A developer can read the structure of every record without a licence, and without us in the room.
Content exports as structured data — fields, versions and publish dates. Not a crawl of rendered pages that loses everything except the current text.
The same content model is available as TypeScript and as schema JSON, so the content model and the application code work from one definition.
This website
A page points at a document rather than holding a copy of it. Correct the source once and every page showing it is correct.
Another channel
Because content is information rather than a finished page, the same document can feed something we have nothing to do with.
Somewhere else entirely
Fields, versions and publish dates leave together. What you take with you is the content model, not a scrape of the site.
Content is independent of presentation. That is the whole idea, and everything above is a consequence of it.
The Studio is where your team does the work. Languages publish each locale independently. The theme sets how all of it looks.