storyblok → one schema

Stories

A second headless CMS — Storyblok’s deep story envelope flattened onto the same clean contract.

Upstream shape

Storyblok wraps each entry in a deep envelope — uuid, group_id, position, alternates, translated_slugs, plus content nested as _uid / component / body blocks.

What Manifold did

  • Stripped the Storyblok story envelope to a flat { title, slug, component, publishedAt, tags }.
  • Pulled the human identity (name, slug, dates) from the story top level and the component from its content.
  • Normalized it onto the SAME contract shape as the Contentful articles — two different CMSes, one schema.
TransformstoISO

Normalized schema

story · v1

Every source above is projected onto exactly these fields — one contract, whatever the upstream shape.

  • titlestringrequired
  • slugstringoptional
  • componentstringoptional
  • publishedAtdateoptional
  • tagsarrayoptional

This page

Fetched live from /v1/entries?type=story through the key-holding proxy.

entries shown
5
schema fields
5
edge cache: HITv1 synced 15m ago

Field mapping

source field → transform → normalized field
  • nametitle
  • full_slugslug
  • content.componentcomponent
  • published_attoISOpublishedAt
  • tag_listtags

Normalized entries

phoenix

43da156a-10d6-474d-8697-f746773114ce

fiddle

hellotaggy
190b2471-a668-420d-a492-2b3d95916468

vue

e157498d-fe81-4d26-a7f8-bcb5d2e8264d

demo

5d604f1f-2a77-4dba-9ad6-f9e6e720c917

health

a9ffea87-ae7d-48b5-9589-7f4c7af121ac