Überblick
Neuroframe's content ran on Storyblok. On paper the CMS solved content management; in practice the requirements outgrew what a headless CMS is good at, and the site's reliability was coupled to an API nobody on the team operated. This record documents the decisions behind the replacement, not its source code.
Was gebaut wurde
A Knowledge Center the company owns end to end: structured content versioned in Git, a registry that types every surface and its URL, a build that assembles and validates pages before they can ship, and server-side rendering on Neuroframe's own infrastructure. No external service sits in the render path. This is not an open-source project; what is documented here is the approach and its trade-offs.
Für wen es ist
Readers of neuroframe.com's industry guides, and the team that publishes them. The visitor sees faster, more reliable pages; the team gets an editorial pipeline with the same review discipline as code.
Geschäftlicher Kontext
This is not a story about Storyblok being bad. Every page render depended on an external API, outages arrived from outside our control, complex layouts fought the content model, and scaling toward thousands of highly structured articles priced against us. The honest conclusion was that the requirements had exceeded the category: what was needed was not a better CMS, it was ownership of the pipeline.
Architektur
One pipeline from a Git commit to a rendered page, with validation between authorship and publication. Nothing in the render path calls out.
Why ownership beat a better CMS
Two failure classes drove the shape. Reliability: when a third-party content API has an outage, your site has an outage, and no amount of caching discipline changes who gets paged. Structure: highly structured, cross-linked article libraries want types, invariants, and URL rules, and a generic block model fights all three. Moving content into Git and rendering on owned infrastructure removed the external dependency entirely and let the taxonomy become code that a build can verify, rather than convention that an editor must remember.
Komponenten
Nine decisions carry the system. Each is documented the same way: why it exists, how it is approached, what constrains it, and what it trades away. Deliberately absent: implementation detail that would reproduce the product.
›C1Content in Git
- Warum sie existiert
- The content is as load-bearing as the code, so it lives under the same discipline: versioned, reviewed, and deployed atomically with the site that renders it.
- Architektur
- Structured content files sit in the repository beside the code. Editorial changes travel as pull requests, so review, history, and rollback come free, and a page and the layout that renders it can never ship out of sync.
- Einschränkungen
- Every change goes through review; nothing publishes from a dashboard. Content and code share one deploy, so a content mistake rolls back the same way a code mistake does.
- Randfälle
- Non-technical contributors need a path that does not require Git fluency; drafts need somewhere to live without publishing; large media stays out of the repository.
- Trade-offs
- You give up the CMS editing experience, real-time preview for non-developers is work you now own. Taken deliberately: the review gate is worth more to this library than dashboard convenience.
›C2Typed taxonomy & URL architecture
- Warum sie existiert
- A knowledge library is not a pile of posts. Industries, categories, and guides are different types with different obligations, and the URL tree should promise only what actually exists.
- Architektur
- Content surfaces are typed, and the URL hierarchy mirrors the taxonomy: industry, category, guide. One rule governs depth: a URL level exists only if a real page serves users at that level. Low-count branches collapse rather than presenting empty shelves.
- Einschränkungen
- Every item has exactly one canonical home. Browsing surfaces never mix types; featured placements may cross them. One design grammar across the whole tree.
- Randfälle
- Categories with one or two guides, industries launching with zero articles (the surface states it honestly rather than padding), and legacy URLs from earlier structures.
- Trade-offs
- Types and rules make ad-hoc placement harder by design. The structure is the product; convenience placements erode it.
›C3Content registry
- Warum sie existiert
- Navigation, sitemaps, related-content, and hub pages must never disagree about what exists. A single registry answers that question for every consumer.
- Architektur
- One typed registry maps every piece of content to its surface, locale, and URL. Menus, directories, feeds, and cross-links derive from it at build time instead of being maintained by hand in parallel.
- Randfälle
- Content present on disk but not registered, registered but unpublished, and items moving between categories without breaking their history.
- Trade-offs
- A registry is a second place a new article must be declared. Accepted: the declaration is what makes every downstream surface derivable and verifiable.
›C4Owned rendering pipeline
- Warum sie existiert
- Complex editorial layouts were the point of friction with the block model. Owning the render layer turns layouts into components with the full power of the framework.
- Architektur
- Pages render server-side on Neuroframe's own infrastructure from the built content. Editorial designs, galleries, story arcs, and structured hubs, are components in code, not compositions of generic CMS blocks.
- Einschränkungen
- The render path makes no external API calls. Performance budgets and the design grammar bind every template.
- Randfälle
- Long-tail pages that must render well without bespoke attention; the tension between one grammar and per-page art direction.
- Trade-offs
- Layout freedom for developer involvement: new layout species need an engineer. For a library where layout is brand, that is the correct side of the trade.
›C5Localization
- Warum sie existiert
- The Knowledge Center serves more than one market, and half-translated surfaces damage trust more than English-only ones.
- Architektur
- One content tree carries every locale with English as the source of truth. Translation happens once, at copy freeze, never incrementally against moving copy. Locale routing, alternates, and sitemaps derive from the same registry as everything else.
- Einschränkungen
- No locale strings for work-in-progress surfaces. A translated label must never point at an untranslated page.
- Randfälle
- Content that exists in one locale only, and locale-specific URL forms that still need the redirect discipline below.
- Trade-offs
- Slower to light up a new language, immune to the half-translated state readers actually notice.
›C6Migration & redirect discipline
- Warum sie existiert
- The move retired an entire URL scheme. Links from outside do not know your architecture changed, and a redirect graph with a cycle takes pages down as surely as an outage.
- Architektur
- Every retired URL gets a permanent redirect into the new tree, and the full redirect graph is kept acyclic by rule: every chain terminates at a page that answers 200 in one hop wherever possible.
- Einschränkungen
- Redirects are declared beside the routes they protect and documented with their invariant, so a future change can see the graph it is editing.
- Randfälle
- Locale-prefixed variants of retired pages, wildcard moves that must preserve the deep path, and redirects interacting with earlier generations of redirects.
- Trade-offs
- Redirect rules accumulate and must be maintained. The alternative is link rot and loops, which are worse than the bookkeeping.
›C7The Decision Engine
- Warum sie existiert
- Producing many highly structured pages by hand does not scale, and hand-produced structure drifts. An internal system assembles structured pages from typed inputs so the library can grow without proportional editorial cost.
- Architektur
- Described here only at the level of what it does: the Decision Engine takes typed inputs and produces candidate structured pages through the same validation gates as everything else; nothing it produces can publish without passing them, and the surrounding pipeline treats its output exactly like human-authored content. Its internals are deliberately not documented in this record.
- Randfälle
- Output that passes validation but reads generically, which is a quality-bar question, not a correctness one, and inputs the type system cannot yet express.
- Trade-offs
- Publishing this section at all trades some mystique for credibility; publishing more would trade away the advantage. The line is drawn at behavior and guarantees.
›C8Build pipeline & verification
- Warum sie existiert
- When content, taxonomy, and redirects are all code, the build can verify promises a CMS could only hope editors kept.
- Architektur
- The build assembles pages from the registry and then verifies the result: routes resolve, redirect chains terminate, locale surfaces agree with the registry, and rendered output passes structural checks. A failed check fails the deploy.
- Einschränkungen
- Checks run on every build, not on a schedule. New surface types must arrive with their checks.
- Randfälle
- Checks that pass locally against stale artifacts, which taught the team to distrust warm dev servers and verify against clean builds.
- Trade-offs
- Builds are slower and stricter than pushing to a CMS. That strictness is the reliability story.
›C9Retiring the CMS
- Warum sie existiert
- The riskiest day of an architecture replacement is the cutover. The migration was staged so no reader ever saw the seam.
- Architektur
- Content was frozen, ported into the typed tree, and verified surface by surface while the CMS still served production. The switch was a routing change with the redirect graph already in place, and the external API left the render path the same day.
- Trade-offs
- A staged migration takes longer than a rewrite-and-swap. It also never took the site down, which was the entire point.
Visuelles Ergebnis
Exhibits from the live Knowledge Center. Slots below await real captures; nothing is mocked.
The knowledge directory
Typed industry surfaces from one registry.
An industry library
The library-first hub: lead story, browse, and filters on one page.
A structured guide
An editorial layout that the block model could not carry, built as components.
Locale parity
One tree, three languages, no half-translated surfaces.
Build verification
The gate that fails a deploy before it fails a reader.
Wirkung
What ownership changed, by audience.
- Geschäft
- Site reliability no longer depends on a third-party content service.
- Cost stops scaling per article against an external platform as the library grows.
- Kunde
- Faster first paint from owned SSR with no external API in the path.
- Richer editorial layouts than a block model could express.
- Betrieb
- One deploy carries code and content; one rollback covers both.
- Outage exposure from the content layer went to zero by construction.
- Engineering
- Taxonomy and URL rules became code the build verifies, not conventions editors remember.
- Editorial changes gained code review, history, and atomic rollback.
- The Decision Engine can grow the library without proportional hand-assembly.
- Umfang
- Three locales from one content tree.
- An architecture sized for thousands of structured articles before it strains.
Technische Dokumente
Documents this record seeds. Each becomes a dated entry as it is written.
Fallstudie
The complete arc, compressed.
- Problem
- Every page render depended on an external CMS API: outages outside the team's control, layouts fighting a generic block model, and per-article costs that scaled against a library meant to reach thousands of structured articles.
- Ziel
- Complete ownership of the content pipeline, from authorship to rendered page, with reliability, structure, and localization as build-verified properties rather than editorial conventions.
- Einschränkungen
- No external service in the render path; a migration that never takes the site down; a URL tree that promises only what exists; and a public record that documents decisions without reproducing the product.
- Ansatz
- Move content into Git under code review, type the taxonomy and URL architecture in a single registry, assemble and validate pages at build time, render server-side on owned infrastructure, and localize once at copy freeze. Stage the migration behind an acyclic redirect graph and cut over as a routing change.
- Architektur
- Git authorship, a typed registry, a validating build, owned SSR, one tree for three locales, with the internal Decision Engine assembling structured pages through the same gates as human-authored content.
- Trade-offs
- No CMS editing experience, stricter and slower builds, redirect bookkeeping, and developer involvement for new layout species, each accepted deliberately and named in this record.
- Ergebnis
- The Knowledge Center runs in production on neuroframe.com with zero external APIs in the render path. The CMS is retired, the redirect graph holds, and the library has room to compound.
- Lektionen
- Requirements can outgrow a category; the fix is ownership, not a better vendor.
- Structure that lives as code can be verified; structure that lives as convention decays.
- A migration's success is measured by what readers never noticed.
- You can document engineering honestly without publishing the product.
- Zukunft
- Real captures for the exhibits above, the seeded journal entries as dated documents, and the library growth the architecture was sized for.
