We built a unified content platform on Sanity with Next.js front-ends over 14 weeks: (1) Content model: unified structured content architecture serving all content needs.
Content types: documentation page (structured fields: title, description, body as Portable Text, API module reference, product version applicability, difficulty level, prerequisite pages, related pages, code examples as structured blocks with language tabs, and changelog entries), marketing page (structured sections — hero, features grid, testimonials, CTA, FAQ — each section a structured component that marketing can compose without engineering), blog post (structured: title, subtitle, author reference, topic taxonomy, body as Portable Text with block-level semantics, key takeaways as structured list, related posts, CTA sections), API reference (auto-generated from OpenAPI spec — merged with hand-written enrichment content in Sanity), help article (structured: product feature reference, body, related articles, contextual trigger conditions — determining when the article appears in-product), and code example (structured: language, framework, code, description, runnable flag, sandbox URL — reusable across docs, blog, and marketing). Content relationships: documentation pages reference API references, code examples, and related docs.
Blog posts reference documentation pages (deep-linking from blog to relevant docs). Marketing pages reference blog posts and case studies. Help articles reference documentation pages. This content graph enables sophisticated content discovery and reuse. (2) Documentation platform: Next.js App Router serving documentation with developer-grade performance. Versioned docs: documentation content tagged with version ranges (v1.0-v1.9, v2.0-v2.3, v3.0+). Version selector in the UI — developers choose their installed version and see version-appropriate content. Automatic version detection from API key (if the developer is logged in, docs default to their current API version). Interactive code examples: each code example rendered with: language tabs (JavaScript, Python, Go, Ruby, PHP — developer selects their language, all examples on the page update), live playground (code runs in-browser sandbox — developer sees output without leaving the docs), and copy button with framework-specific import statements.
API reference: auto-generated from OpenAPI spec (updated on each API deployment via CI/CD webhook), merged with hand-written explanations and examples from Sanity. Interactive API explorer: developers make authenticated API calls directly from the docs page (similar to Stripe's API docs — the gold standard in SF). Search: Algolia integration with API-aware indexing — search understands API endpoints, parameters, and response fields. Typo tolerance, synonym support, and AI-powered "did you mean" suggestions. Performance: average page load 0.8 seconds (from 3.2 seconds). Pre-fetching: docs navigation prefetches adjacent pages — resulting in near-instant page transitions. Core Web Vitals: all green (LCP 1.1s, CLS 0.01, INP 45ms). (3) Marketing website: Next.js marketing site with Sanity-powered page builder. Visual page builder: marketing team composes pages from pre-built components (hero sections, feature grids, testimonial carousels, pricing tables, FAQ accordions, CTA blocks, comparison tables).
Each component: designed by the design team, built as a React component, and registered in Sanity as a content type that marketing can configure without code. A/B testing: content variants stored in Sanity — the front-end renders variant A or B based on experiment configuration (integrated with PostHog for statistical analysis). Marketing can launch, monitor, and conclude A/B tests without engineering. Landing page creation: marketing creates campaign-specific landing pages in 2 hours (from 3+ weeks with engineering backlog). No code deployment required — content publishes from Sanity to the live site via webhook-triggered ISR. Performance: average page load 1.2 seconds (from 4.1 seconds). Core Web Vitals: all green. Organic search traffic: reversed the 8% decline — growing 12% quarter-over-quarter after migration (page speed improvement + structured content enabling rich snippets + better SEO metadata management). (4) Blog platform: Next.js blog powered by Sanity structured content.
Editorial workflow in Sanity: draft (writer creates), editorial review (editor reviews in Sanity with tracked changes), SEO review (SEO metadata validated — title length, meta description, keyword presence, internal linking suggestions), and publish (scheduled or immediate — with automatic social promotion triggers). Publishing time: from 2-3 hours to 15 minutes (no copy-pasting between tools, no manual formatting). Structured content enables: automated social post generation (title + key takeaway + featured image pushed to social scheduling tool), newsletter inclusion (blog content pulled into newsletter template via API), and content reuse (key insights from blog posts surfaced in relevant documentation pages and in-product help). (5) In-product help: help content served from Sanity to the product via API. Contextual help: help articles tagged with product feature references — the product queries Sanity API with the current feature context and receives relevant help content.
Coverage: from 20% of features to 92% in the first 3 months. Content updates: product team updates help content in Sanity — changes reflect in the product without code deployment (from requiring a code deployment for every help text change). Onboarding flows: step-by-step product walkthroughs created as structured content in Sanity — product team can create, modify, and A/B test onboarding flows without engineering. (6) Internationalization: translation workflow established for Japanese and German. Source content: English in Sanity (structured fields enable granular translation — translating individual fields rather than monolithic pages). Translation management: Sanity integrated with translation management system — content changes in English automatically create translation tasks. Translation review: native-speaking team members review translations in Sanity (seeing source and target side-by-side). Priority content: documentation (critical paths), key marketing pages, and in-product help translated first. Blog and secondary content translated on a rolling basis.
Translation coverage achieved in 5 months (ahead of 6-month target): Japanese: documentation 100%, marketing 85%, help 100%. German: documentation 100%, marketing 80%, help 100%.