Skip to content
Pra
All work

Disability Services Organization · 2025 · Frontend developer

A publishing pipeline editors actually wanted to use

Replacing a rich-text-as-layout-engine content model with a small set of composable blocks, and a preview that matched production.

Time to publish
−70%
Content types
9
Block types
12

Stack

  • Next.js
  • Sanity
  • GROQ
  • Portable Text
  • ISR

The problem

The existing content model had one enormous rich text field per page, and editors had learned to abuse it into a layout engine — pasted tables, inline styles, nested markup carried over from Word. Every design change broke existing pages, and nothing could be reused anywhere: not as a card, not in search results, not in a feed.

The approach

We modelled the content rather than the components. The question asked of every field was whether it described a fact about the thing or a decision about how it looks today. Facts stayed; presentation moved into code where it can change without a content migration.

Editors did genuinely need flexibility, so rich text was replaced with a small, closed set of composable blocks — each a meaningful content unit rather than a layout primitive. A "quote with attribution" block, yes. A "two column container" block, deliberately not.

Schema validation carried a lot of weight: required alt text, length limits on anything that appears in a card so the design can't be broken by an over-long title, and slug patterns. Each of those is a class of bug that can no longer reach production, caught by the person best placed to fix it.

Preview was the adoption lever. Draft content rendered through the exact production components, so what an editor saw was what would ship — rather than an approximation in a CMS-shaped preview pane.

The outcome

Nine content types and twelve blocks replaced an unbounded rich text field. Because content was now structured facts, the same post could render as a page, a card, an RSS item and an OG image with no additional authoring. The time-to-publish reduction came almost entirely from editors no longer fighting the layout.