■ Sanity CMS Development · Schema-First
schemas/product.ts
Sanity v3
import { defineField, defineType } from 'sanity'
export default defineType({
name: 'product',
title: 'Product',
type: 'document',
fields: [
defineField({ name: 'title', type: 'string', validation: r => r.required() }),
defineField({ name: 'slug', type: 'slug', options: { source: 'title' } }),
defineField({ name: 'line', type: 'reference', to: [{ type: 'productLine' }] }),
defineField({ name: 'body', type: 'array', of: [
{ type: 'block' },
{ type: 'animatedDiagram' }, // schema-connected component
{ type: 'projectReference' }, // referenced content
]}),
defineField({ name: 'i18n', type: 'object', fields: [
{ name: 'de', type: 'localizedBody' },
{ name: 'en', type: 'localizedBody' },
]}),
],
})
■ Talk to the lead architect
Ritesh Agarwal · Lead Architect, Appycodes · LinkedIn
■ What you get
Each engagement starts with a week on the schema. Anyone who skips that step is selling you a content migration project they don't know they're selling.
01
Corporate, B2B, editorial sites. Visual editing via the Presentation tool, draft mode in App Router, typed schemas with custom validation.
02
Schema-level i18n, language-aware routing, fallback chains. Shipped in production across German / English with two product lines.
03
From WordPress, Contentful, or Strapi. Content remap, URL preservation, redirect engineering at the edge. SEO equity preserved.
04
References vs portable text vs nested objects vs singletons. We argue about it at Week 1 because Week 12 is when bad calls hurt.
05
Custom input components, validation rules, preview panes that show how content will actually render. Editors don't have to guess.
06
Schema-connected interactive components — animated diagrams, slideshows, click-to-play media — editor-configurable without redeploying the frontend.
▼ The Schema Cost Curve
Cost of a schema-touching change, plotted across the first 30 weeks of a Sanity build. Good schemas stay flat. Hurried ones go exponential as content accumulates.
■ Evidence
Greenfield Sanity + Next.js build in German and English for a corporate rail infrastructure firm. Original sitemap defined services up to three levels deep.
Post-sign-off, a fourth level appeared across two product lines (Long Distance Freight Track and Urban Transit — Betonschwellen, Feste Fahrbahn, Schotteroberbau, Rheda variants), forcing a Sanity schema rebuild, new page- mapping logic, and manual content entry across roughly two dozen new pages.
Plus a Project Reference table with 23 entries, each its own schema and content. Plus schema-connected interactive components: animated diagram, Sanity-connected slideshow on the Project Reference page, click-to-play video on Plants & Construction with muted preview and click-for-sound.
The point: schema rework cascades through content already entered. Once content is in production against a schema, restructuring that schema is a content- migration project, not a code change. We learned to quote schema-changing scope changes separately because we've lived the cost of getting it wrong.
Pair with headless WordPress (the WP alternative for buyers staying in WP), SaaS web app development, and technical SEO for the schema migration's URL-equity work.
■ Good fit if
■ Probably not a fit
■ Stack we ship on
■ If Sanity is the right call
■ Other services
Explore the rest of what we build.
MVP to production builds, multi-tenant, billing, AI features.
Learn moreiOS + Android in one codebase. Push, offline, OTA updates.
Learn moreConvert your Lovable / Claude / Bolt web app to React Native or Flutter — backend reused.
Learn morePrerender, schema, Core Web Vitals — engineering-led SEO.
Learn moreB2B marketplaces, membership sites, headless WordPress.
Learn moreCustom themes, migration to Shopify, Shopify apps, supplier-feed automation.
Learn moreB2B wholesale, high-SKU catalogues, WooCommerce Subscriptions, Shopify-to-Woo migrations.
Learn morePost-launch stability, security, monthly improvements.
Learn moreTake an AI-built prototype to a production-ready product.
Learn moreConvert AI-built web prototypes into native mobile apps.
Learn moreSubmit, configure and optimise for App Store + Play Store.
Learn moreModernise legacy systems with zero-downtime migrations.
Learn moreEngineering capacity for agencies, under your brand.
Learn moreFrom idea to live product — design, build, launch, growth.
Learn moreCustom REST/GraphQL APIs and third-party integrations.
Learn moreMulti-tenant AI SaaS with subscriptions and admin dashboards.
Learn moreMarketplaces with credit, KYC, and trust infrastructure baked in.
Learn moreCustomised Moodle deployments and bespoke Moodle mobile apps.
Learn moreSubscription recovery, dunning, migrations, combinatorial billing matrices.
Learn moreMagento, WordPress, BigCommerce → Shopify. Redirect-engineering first.
Learn moreForensic incident response — Magecart, backdoors, DDoS, GDPR Art. 33.
Learn moreFour production Laravel platforms. ERPs, contracts, tendering.
Learn moreWebhooks, metering, proration, dunning, multi-currency, reconciliation.
Learn moreWorkers, R2, WAF, Bulk Redirects. The full surface, not just the orange cloud.
Learn moreTender automation, contract operations, compliance calendars, calculators.
Learn moreRLS, multi-role auth, production-hardening Lovable / Bolt / v0 prototypes.
Learn moreWP + Next.js with preview, ISR, auth handoff, media pipeline, search.
Learn moreFour production Vue platforms. Vue + Laravel as the default pairing.
Learn morenginx, PHP-FPM, slow-query analysis, plugin audit. Diagnostic engineering, not plugin installs.
Learn moreSurgical plugin work — namespaced, idempotent, version-controlled. Not functions.php.
Learn moreKB + forum + adjacent surfaces. Search, version-aware routing, role-based visibility.
Learn moreMulti-day festivals, white-label venue groups, offline-capable door-staff apps.
Learn moreProduction RAG with chunking, hybrid retrieval, reranking, grounding, eval.
Learn moreMake.com, n8n, Zapier, and custom Node workers — chosen by volume.
Learn moreCalculator- and location-driven SEO surfaces with real data and SSR.
Learn more