• FeaturesFeatures
  • The repoThe repo
  • ShowcaseShowcase
  • PricingPricing
  • FAQFAQ
  • BlogBlog

Built for agentic development.

The Sanity setup agents don't reinvent.

Every run invents a new one, none decided. This Sanity kit for Next.js and Astro commits six years of decisions. Your agent builds inside them, and checks its work through MCP and a real Chrome.
GetGet
accessaccess
NEXT 16.x ASTRO 7.x SANITY v6 TS: STRICT. AGENTS.MD: LOADED MCP: 2 SERVERS DRIFT: 0
NEXT 16.x​ASTRO 7.x​SANITY v6​TS: STRICT​
AGENTS.MD: LOADED​MCP: 2 SERVERS​DRIFT: 0​
BlogBlogRoadmapRoadmapGet accessGet accessPrivacy PolicyPrivacy PolicyTerms Of ServiceTerms Of Service

© The Content Architecture

Built by edoardolunardi.dev
Common problems
001 Agent redesigns the architecture on every prompt ∞ HRS. 002 Page builder schema + section registration + preview ~5 HRS. 003 Draft mode + live preview + webhook revalidation ~4 HRS. 004 CDN vs. data cache — stale content after publish ~3 HRS. 005 Studio structure editors can actually use ~3 HRS. 006 SEO metadata, OG images, sitemaps, robots.txt ~2 HRS. 007 Rewriting the same 12 components ~2 HRS. 008 Redirects, analytics, view transitions, Mux ~2 HRS. 009 Contact form + spam guard + Resend wiring ~1 HR. 010 ESLint, Prettier, Biome, git hooks ~1 HR. 011 Basic auth for staging environments ~1 HR. ESTIMATED TIME LOST: ~24 HOURS PER PROJECT (3 FULL DAYS)
001Agent redesigns the architecture on every prompt∞ HRS
002Page builder schema + section registration + preview~5 HRS
003Draft mode + live preview + webhook revalidation~4 HRS
004CDN vs. data cache — stale content after publish~3 HRS
005Studio structure editors can actually use~3 HRS
006SEO metadata, OG images, sitemaps, robots.txt~2 HRS
007Rewriting the same 12 components~2 HRS
008Redirects, analytics, view transitions, Mux~2 HRS
009Contact form + spam guard + Resend wiring~1 HR
010ESLint, Prettier, Biome, git hooks~1 HR
011Basic auth for staging environments~1 HR
ESTIMATED TIME LOST: ~24 HOURS PER PROJECT (3 FULL DAYS)

The page builder alone costs you days. Every single time.

It's never the easy stuff that hurts. It's the page builder, modeled from scratch again. Draft mode and live preview, wired up and subtly broken again. The cache bug where published content goes stale and the client swears you shipped something wrong. A Studio structure your editors actually understand, instead of one they email you about.
This is the part nobody quotes for and everybody rebuilds. Days gone before the real work starts.

Every decision already made. So you can skip to the actual work.

The production foundation under my client work: hundreds of decisions, schema, fetching, structure, SEO, made once over six years and committed. Clone it, rename it, ship. Committed decisions are also why agents work here: inside them an agent ships, without them it redesigns.
  • 001 / Agent-native

    AGENTS.md and a dozen scoped skills load the conventions before the first prompt, so Claude Code or Cursor builds inside the decisions instead of proposing a new architecture per run. Two MCP servers ship in the repo: one reads the running app, one drives a real Chrome. The agent checks its own work.

  • 002 / Agent-ready in production

    The shipped site stays legible to agents: an editable llms.txt drafted from your content, and a token-light Markdown twin of every page on the same URL. A feature you can put in your own proposals.

  • 003 / Schema as a system

    Document roles, factory functions, singletons. Every schema looks the same, so every editor knows where to go. You never model the structure from scratch again.

  • 004 / The hard fields, already built

    The three fields nobody gets right the first time. A link field that handles every kind of link. A media field that returns image, Mux, Rive, and Lottie in one shape, dimensions included, so layout never shifts. A page builder with guardrails. Typed, composed everywhere.

  • 005 / Fetch layer, solved

    CDN bypassed in production, Data Cache doing the work, webhooks invalidating on publish, draft mode wired in. Stale content after publish stops being a midnight problem.

  • 006 / A Studio editors actually use

    Every document type where editors expect it. Pages own their routes, singletons stay locked, no hunting. Clients stop emailing to ask where their homepage lives.

  • 007 / SEO, done not deferred

    Per-page metadata from schema, sitemap driven by Sanity, OpenGraph with auto-cropped images, robots.txt included. Nothing bolted on the week before launch.

  • 008 / Production-ready from day one

    Basic auth, spam-protected forms, redirects managed in Sanity, analytics, view transitions. The plumbing you reconfigure every project, already wired.

  • 009 / Wired up, not just cloned

    An interactive setup script provisions the Sanity project, mints tokens, wires CORS and the revalidation webhook, and writes your .env. Migration scripts back up production and move content between environments. The first run is handled, not documented.

This is the actual repo.
                                                                        • GET-ACCESS.md
                                                                        README.md
                                                                        1
                                                                        2
                                                                        3
                                                                        4
                                                                        5
                                                                        6
                                                                        7
                                                                        8
                                                                        9
                                                                        10
                                                                        11
                                                                        12
                                                                        13
                                                                        14
                                                                        15
                                                                        16
                                                                        17
                                                                        18
                                                                        19
                                                                        20
                                                                        21
                                                                        22
                                                                        23
                                                                        24
                                                                        25
                                                                        26
                                                                        27
                                                                        28
                                                                        29
                                                                        30
                                                                        31
                                                                        32
                                                                        33
                                                                        34
                                                                        35
                                                                        36
                                                                        37
                                                                        38
                                                                        39
                                                                        40
                                                                        41
                                                                        42
                                                                        43
                                                                        44
                                                                        45
                                                                        46
                                                                        47
                                                                        48
                                                                        49
                                                                        50
                                                                        51
                                                                        52
                                                                        53
                                                                        54
                                                                        55
                                                                        56
                                                                        57
                                                                        58
                                                                        59
                                                                        60
                                                                        61
                                                                        62
                                                                        63
                                                                        64
                                                                        65
                                                                        66
                                                                        67
                                                                        68
                                                                        69
                                                                        70
                                                                        71
                                                                        72
                                                                        73
                                                                        74
                                                                        75
                                                                        76
                                                                        77
                                                                        78
                                                                        79
                                                                        80
                                                                        81
                                                                        82
                                                                        83
                                                                        84
                                                                        85
                                                                        86
                                                                        87
                                                                        88
                                                                        89
                                                                        90
                                                                        91
                                                                        92
                                                                        93
                                                                        94
                                                                        95
                                                                        96
                                                                        97
                                                                        98
                                                                        99
                                                                        100
                                                                        101
                                                                        102
                                                                        103
                                                                        104
                                                                        105
                                                                        106
                                                                        107
                                                                        108
                                                                        109
                                                                        110
                                                                        111
                                                                        112
                                                                        113
                                                                        114
                                                                        115
                                                                        116
                                                                        117
                                                                        118
                                                                        119
                                                                        120
                                                                        121
                                                                        122
                                                                        123
                                                                        124
                                                                        125
                                                                        126
                                                                        127
                                                                        128
                                                                        129
                                                                        130
                                                                        131
                                                                        132
                                                                        133
                                                                        134
                                                                        135
                                                                        136
                                                                        137
                                                                        138
                                                                        139
                                                                        140
                                                                        141
                                                                        142
                                                                        143
                                                                        144
                                                                        145
                                                                        146
                                                                        147
                                                                        148
                                                                        149
                                                                        150
                                                                        151
                                                                        152
                                                                        153
                                                                        154
                                                                        155
                                                                        156
                                                                        157
                                                                        158
                                                                        159
                                                                        160
                                                                        161
                                                                        162
                                                                        # The Content Architecture (Next.js)
                                                                        
                                                                        A modern Next.js 16.3 starter with Sanity CMS integration.
                                                                        
                                                                        ## Features
                                                                        
                                                                        - Next.js 16.3 with App Router and Server Components
                                                                        - Sanity CMS with in-app Studio
                                                                        - TypeScript 6, Tailwind CSS 4, and Biome
                                                                        - Reusable components, page builder sections, and rich text blocks
                                                                        - **Cache Components** ([the modern Next.js caching model](https://nextjs.org/docs/app/getting-started/cache-components)): every page prerenders into a static shell with a one-year lifetime, and publishing in the Studio is the only revalidation signal (webhook + tags, no timers). See [`docs/sanity/revalidation-and-caching.md`](docs/sanity/revalidation-and-caching.md).
                                                                        - Draft mode with Sanity Live, Visual Editing, and SEO helpers
                                                                        - **HTTP Basic Auth (optional)** — `proxy.ts` gates the site or individual URLs using **`BASIC_AUTH_*` environment variables** and **CMS toggles** (Settings → Security, per-entry “Password protect”). See [`docs/features/basic-auth.md`](docs/features/basic-auth.md).
                                                                        - Feature modules for redirects, Umami analytics, and spam prevention
                                                                        - **llms.txt for AI assistants**: an editable, AI-generated [`/llms.txt`](https://llmstxt.org) drafted from your content with Sanity Agent Actions (Site, Agents tab). See [`docs/features/llms-txt.md`](docs/features/llms-txt.md).
                                                                        - **Agent Markdown (content negotiation)**: pages and articles serve a token-light Markdown version to agents that send `Accept: text/markdown`, on the same URL. Generated and stored per page from the Agents tab (one click), then served verbatim. See [`docs/features/agent-markdown.md`](docs/features/agent-markdown.md).
                                                                        - Scaffolding via Plop for repeatable section/block generation
                                                                        - Starter **seed dataset** (`seed/`), imported by `npm run sanity:project-setup` so a new project boots with example content
                                                                        - [`@mantine/hooks`](https://mantine.dev/hooks/getting-started/) for shared React hooks; `features/dom/use-breakpoint.ts` wraps [`useMediaQuery`](https://mantine.dev/hooks/use-media-query/) for Tailwind-aligned breakpoints and touch detection, alongside `constants` / `parseResponsiveValues`
                                                                        
                                                                        ## Getting Started
                                                                        
                                                                        **New here? Start with [`GETTING-STARTED.md`](GETTING-STARTED.md).** It is the guided, top to bottom path from a fresh clone to your first rendered section. The sections below are the reference.
                                                                        
                                                                        ### Prerequisites
                                                                        
                                                                        - Node.js 24.15.0, pinned in `.nvmrc` and in `package.json` (`engines`, `volta`). `engines` requires the `^24.15.0` LTS line, so npm refuses to install on any other major.
                                                                        - npm >= 11.6.2
                                                                        
                                                                        ### Installation
                                                                        
                                                                        ```bash
                                                                        npm install
                                                                        ```
                                                                        
                                                                        ### Environment Variables
                                                                        
                                                                        Create a `.env` file and add at least:
                                                                        
                                                                        ```env
                                                                        SANITY_API_VIEW_TOKEN=your-view-token
                                                                        SANITY_API_EDIT_TOKEN=your-edit-token
                                                                        # Optional: only needed if you register the Sanity publish webhook
                                                                        SANITY_REVALIDATE_SECRET=your-revalidate-secret
                                                                        RESEND_API_KEY=your-resend-api-key
                                                                        RESEND_EMAIL_FROM=notifications@your-domain.com
                                                                        NEXT_PUBLIC_URL=http://localhost:3000
                                                                        NEXT_PUBLIC_SANITY_DATASET=production
                                                                        NEXT_PUBLIC_SANITY_PROJECT_ID=your-project-id
                                                                        NEXT_PUBLIC_SANITY_API_VERSION=2025-02-19
                                                                        NEXT_PUBLIC_SANITY_STUDIO_BASE_PATH=/studio
                                                                        ```
                                                                        
                                                                        `NEXT_PUBLIC_SANITY_STUDIO_BASE_PATH` is the **public** URL for Studio. The Next.js app mounts Studio under `app/sanity-studio/…`; `next.config.ts` rewrites the public path to that folder. If a **content page** must use the same path (e.g. you need `/studio` for a page), set this variable to a different path (e.g. `/admin`) in every environment. See [`docs/sanity/studio-and-structure.md`](docs/sanity/studio-and-structure.md#public-url-rewrites-and-reserved-paths).
                                                                        
                                                                        ### HTTP Basic Auth (optional)
                                                                        
                                                                        For staging or client-review gates, set **`BASIC_AUTH_USERNAME`** and **`BASIC_AUTH_PASSWORD`** in the same environment as the app (local `.env` or your host’s secrets). Turn protection on in **Sanity** (site-wide and/or per document with “Password protect”); credentials are **not** stored in the CMS. Full behavior, exclusions, and Draft Mode bypass: [`docs/features/basic-auth.md`](docs/features/basic-auth.md).
                                                                        
                                                                        ### Seed starter content
                                                                        
                                                                        `npm run sanity:project-setup` imports the bundled example content at the end of its run, unless you answer its last question with **Completely empty**. To load it separately (a blank dataset, a second dataset, a reset), with the CLI authenticated (`npm run sanity:cli -- login`):
                                                                        
                                                                        ```bash
                                                                        npm run sanity:dataset-import -- --file seed/seed-dataset.tar.gz
                                                                        ```
                                                                        
                                                                        See [`docs/sanity/seed-dataset.md`](docs/sanity/seed-dataset.md).
                                                                        
                                                                        ### Development
                                                                        
                                                                        ```bash
                                                                        npm run dev
                                                                        ```
                                                                        
                                                                        - App: [http://localhost:3000](http://localhost:3000)
                                                                        - Studio: `http://localhost:3000` + your `NEXT_PUBLIC_SANITY_STUDIO_BASE_PATH` (see [`docs/sanity/studio-and-structure.md`](docs/sanity/studio-and-structure.md#public-url-rewrites-and-reserved-paths))
                                                                        
                                                                        ### Build
                                                                        
                                                                        ```bash
                                                                        npm run build
                                                                        npm run start
                                                                        ```
                                                                        
                                                                        ## Docs
                                                                        
                                                                        Feature-level docs now live in `docs/` so the root README stays lightweight.
                                                                        
                                                                        - Documentation hub: `docs/README.md`
                                                                        - Sanity setup overview: `docs/sanity/README.md`
                                                                        - **HTTP Basic Auth** (env + CMS toggles, `proxy.ts`): `docs/features/basic-auth.md`
                                                                        - Redirects: `docs/features/redirects.md`
                                                                        - Code generation (Plop): `docs/features/code-generation.md`
                                                                        - Spam prevention: `docs/features/spam-prevention.md`
                                                                        - Animated content (`AnimatedText`, motion wrappers, gating): `docs/features/animated-content.md`
                                                                        - Contact form notifications: `docs/features/contact-form-notifications.md`
                                                                        - Umami tracking: `docs/features/umami-tracking.md`
                                                                        - llms.txt and AI agents (Site, Agents tab, Sanity Agent Actions): `docs/features/llms-txt.md`
                                                                        - Agent Markdown (per-page Markdown via `Accept`-header content negotiation, `proxy.ts`): `docs/features/agent-markdown.md`
                                                                        - Git hooks: `docs/features/git-hooks.md`
                                                                        - Agent skills: `docs/features/agent-skills.md`
                                                                        - Dataset export, import, and migration: `docs/sanity/dataset-migration.md`
                                                                        - Seed dataset (starter content): `docs/sanity/seed-dataset.md`
                                                                        - Sanity project setup (CLI bootstrap): `docs/sanity/project-setup.md`
                                                                        
                                                                        ## Scripts
                                                                        
                                                                        - `npm run dev`: Start development server
                                                                        - `npm run build`: Build for production
                                                                        - `npm run start`: Start production server
                                                                        - `npm run check`: Run all checks (`check.*` in parallel)
                                                                        - `npm run check.types`: TypeScript type checking
                                                                        - `npm run check.biome`: Biome lint (errors only)
                                                                        - `npm run format`: Format with Biome
                                                                        - `npm test`: Run the unit tests
                                                                        - `npm run plop`: Scaffold new sections and rich text blocks
                                                                        - `npm run clear`: Remove local build and cache output (`.next`, `node_modules/.cache`)
                                                                        - `npm run sanity:typegen`: Generate Sanity types
                                                                        - `npm run sanity:cli`: Run the Sanity CLI with `.env` loaded (via dotenvx)
                                                                        - `npm run sanity:schema-deploy`: Deploy the schema to Sanity (required by Agent Actions)
                                                                        - `npm run sanity:dataset-export`: Backup a dataset to `./backups/` (see `docs/sanity/dataset-migration.md`)
                                                                        - `npm run sanity:dataset-import`: Restore a `.tar.gz` into a dataset (see `docs/sanity/dataset-migration.md`)
                                                                        - `npm run sanity:dataset-migrate`: Copy one dataset into another (see `docs/sanity/dataset-migration.md`)
                                                                        
                                                                        Every `sanity:*` script above is interactive: run it with no flags and it asks what it needs, prints a summary, and confirms before touching anything. Flags answer those questions up front, `--dry-run` prints the plan and stops, and `--yes` skips every prompt (see `scripts/README.md`).
                                                                        - `npm run sanity:project-setup`: Interactive wizard for a Sanity project, tokens, CORS, revalidate webhook, and `.env` (see `docs/sanity/project-setup.md`)
                                                                        
                                                                        ## Project Structure
                                                                        
                                                                        ```text
                                                                        .
                                                                        |-- app/                 # Next.js App Router
                                                                        |-- components/          # Shared React components
                                                                        |-- features/            # Feature modules
                                                                        |-- public/              # Static assets
                                                                        |-- sanity/              # Sanity config, schema, structure
                                                                        |-- seed/                # Starter dataset shipped with the template
                                                                        |-- scripts/sanity-dataset/  # Dataset export & migration CLIs
                                                                        |-- scripts/sanity-project-setup/  # Sanity project bootstrap (tokens, CORS, webhook, .env, seed)
                                                                        |-- docs/                # Project documentation
                                                                        |-- proxy.ts             # Next.js 16 Proxy (Basic Auth: env credentials + CMS toggles)
                                                                        |-- next.config.ts      # Next.js config and redirects
                                                                        `-- env.ts               # Typed environment config
                                                                        ```
                                                                        
                                                                        ## Agent Skills
                                                                        
                                                                        AI guidance for this repository lives in `AGENTS.md` and `.agents/skills/`.
                                                                        
                                                                        ## Learn More
                                                                        
                                                                        - [Next.js Documentation](https://nextjs.org/docs)
                                                                        - [Sanity Documentation](https://www.sanity.io/docs)
                                                                        - [Tailwind CSS Documentation](https://tailwindcss.com/docs)
                                                                        
                                                                        ## License
                                                                        
                                                                        Commercial, one license per buyer. Build unlimited personal, commercial, and client projects with it, and sell what you build. Do not resell or republish the boilerplate itself.
                                                                        
                                                                        See [`LICENSE.md`](LICENSE.md) for the full terms, and the [Terms of Service](https://www.contentarchitecture.dev/terms-of-service) for the purchase terms.
                                                                        
                                                                        Terminal
                                                                        ~/the-content-architecture-next-js > get-access # €549 · one-time
                                                                        ~/the-content-architecture-next-js > 

                                                                        The work that gets remembered.

                                                                        Real sites, shipped on The Content Architecture. With the plumbing already handled, the effort goes where it shows. The work here has been recognized by Awwwards, FWA, and CSSDA, and picked up across design directories.
                                                                        Good Fella website built on The Content Architecture

                                                                        Good Fella

                                                                        House of Honey website built on The Content Architecture

                                                                        House of Honey

                                                                        Aspen website hero section describing recruiting for software and AI/ML roles

                                                                        Aspen Search

                                                                        Anuc Home website built on The Content Architecture

                                                                        Anuc Home

                                                                        Portfolio website homepage for Edoardo Lunardi with featured article, about, and work gallery

                                                                        Edoardo Lunardi

                                                                        Serve Robotics website built on The Content Architecture

                                                                        Serve Robotics

                                                                        Muralia website built on The Content Architecture

                                                                        Muralia

                                                                        blink website built on The Content Architecture

                                                                        blink

                                                                        WASL Architects website built on The Content Architecture

                                                                        WASL

                                                                        Creative Lives in Progress website built on The Content Architecture

                                                                        Creative Lives in Progress

                                                                        Sanity landing page with headline “The Sanity setup agents don’t reinvent”

                                                                        The Content Architecture

                                                                        “We shipped the Good Fella site on an early version and it saved us tons of time. Six months in, we're still building pages and sections in an afternoon without fighting the setup.”“We shipped the Good Fella site on an early version and it saved us tons of time. Six months in, we're still building pages and sections in an afternoon without fighting the setup.”

                                                                        Julian Fella

                                                                        Co-Founder, Good Fella

                                                                        “Edo and I ran a client project on this together. The plumbing was already handled, so the week we'd normally lose to setup went into the creative work the client actually remembers.”“Edo and I ran a client project on this together. The plumbing was already handled, so the week we'd normally lose to setup went into the creative work the client actually remembers.”

                                                                        Elliott Mangham

                                                                        Founder & Frontend Engineer

                                                                        “I opened the fetch layer and found the revalidation problem I'd burned two days on last project, already solved and committed. That one folder paid for the whole thing, and the rest is six years of decisions I'd have made the slow way.”“I opened the fetch layer and found the revalidation problem I'd burned two days on last project, already solved and committed. That one folder paid for the whole thing, and the rest is six years of decisions I'd have made the slow way.”

                                                                        Malik Kotb

                                                                        Web Designer & Engineer

                                                                        010012345678910123456789/03

                                                                        Slide 1 of 3

                                                                        Two editions. One architecture. Lifetime updates.

                                                                        trusted by 30+ engineers

                                                                        Next.jsAvailable now
                                                                         
                                                                        • 001THE NEXT.JS 16 + SANITY V6 REPO
                                                                        • 002FOR NEXT.JS + SANITY ENGINEERS, NOT NO-CODE
                                                                        GetGet
                                                                        accessaccess
                                                                        AstroAvailable now
                                                                         
                                                                        • 001THE ASTRO 7 + SANITY V6 REPO
                                                                        • 002FOR ASTRO + SANITY ENGINEERS, NOT NO-CODE
                                                                        GetGet
                                                                        accessaccess
                                                                        Every edition includes
                                                                        • 001ONE-TIME FEE, NO SUBSCRIPTION
                                                                        • 002PERPETUAL LICENSE, UNLIMITED PROJECTS
                                                                        • 003COMMERCIAL USE, NO ATTRIBUTION
                                                                        • 004LIFETIME UPDATES, INCLUDED
                                                                        • 005AGENT-READY: SKILLS, MCP, LLMS.TXT
                                                                        • 006PRIVATE GITHUB DISCUSSIONS
                                                                        • 007DIRECT LINE TO THE MAINTAINER
                                                                        • 008FULL SOURCE ON PURCHASE, SALES FINAL
                                                                        • 009ALL PRICES IN EUR
                                                                        Already own one edition? The second one is not full price. Email me and I will send you a code.

                                                                        Before you buy

                                                                        GetGet
                                                                        accessaccess
                                                                        • Two editions, one architecture. The Next.js edition runs Next.js 16 with the App Router and React Compiler; the Astro edition runs Astro 7. Both share Sanity v6, TypeScript in strict mode, Tailwind 4, and Biome for lint and format. Deploys on Vercel out of the box; the Next.js edition also runs on Cloudflare via OpenNext.
                                                                        • It is built for it. AGENTS.md plus a dozen scoped skills mean any agentic tool ingests the conventions and boundaries before you write a prompt. Ask an agent to build this from scratch and you get a different architecture every run. Here the decisions are already made, so the agent works inside them instead of inventing new ones. You still read and write the real code yourself; the agent works inside the architecture, it does not write the app for you.
                                                                          It also ships two preconfigured MCP servers. One reads the running Next.js dev server: compilation errors, routes, docs that match the installed version. The other drives a real Chrome: screenshots across viewports, performance traces, screencasts of transitions it can review frame by frame. The agent doesn't just know the conventions, it can look at the app it's changing.
                                                                        • Yes. Every site built on this ships with an editable llms.txt, drafted from your content with Sanity Agent Actions from the Site document, and a token-light Markdown version of every page and article, served on the same URL to any agent that sends Accept: text/markdown. You generate it per page in Studio, review it, and it is served verbatim. Your client's site is readable by assistants and agentic crawlers on day one, a line item you can put in your own proposal.
                                                                        • No. The opinion lives in the architecture, and the tools sit on top of it. Tailwind, Biome, Mux, Rive, Lottie, these are the defaults I reach for on most projects, wired in cleanly so they come out just as cleanly. Don't want Tailwind? Pull it. Prefer ESLint over Biome? Swap it. No Mux, Rive, or Lottie in this project? Drop them. What you are really buying is the patterns underneath, how content is modeled, fetched, and composed. The libraries are just what I ship with on 90% of my projects.
                                                                          The Sanity layer is decoupled by design too. Every import inside the sanity/ folder is relative or an external package, nothing reaches into the app code, so you can lift the whole Studio, schema, and field primitives into another project. The content layer doesn't hold you hostage to the front end.
                                                                        • Yes, and you should not pay twice for the same architecture. Both editions model content the same way, so the second repo is mostly a re-read of patterns you already know. If you own one and want the other, whether that is today or a year from now, you pay a reduced price for it.
                                                                          There is no automatic checkout for it. Email me from the address you bought with and I will send you a discount code for the second edition.
                                                                        • Some, yes. This is a real codebase, not a no-code template. You should be comfortable in a Sanity schema file and a Next.js or Astro project. If you are, you will feel at home in minutes. If you have never opened a schema, the article series is the best place to start before deciding.
                                                                        • No, and I'd rather tell you here than take your money. This is a real Next.js or Astro and Sanity codebase, not a no-code tool: no visual page builder, no drag-and-drop editor. You clone the repo and write real code on top of it. If you don't work in Next.js or Astro with Sanity, it isn't for you.
                                                                        • Yes. Unlimited projects, commercial use, no attribution required. Use it on every client site you ship. The one thing you cannot do is resell the architecture itself as a competing product.
                                                                        • Most boilerplates give you a pile of features. This gives you decisions. Every hard call, document modeling, the fetch layer, revalidation, the link and media fields, was made once over six years and committed. It is opinionated on purpose, and it is the architecture I ship my own client work on, not a side project cleaned up for sale.
                                                                        • A free starter gets you a clean install and the easy parts. What it leaves you is the work that actually costs the days: a page builder with guardrails, the fetch layer and revalidation, the link and media fields, a Studio structure your editors don't email you about. Those decisions are still yours to make on every project. Here they're already made, over six years of real client work, and committed. You're not paying for code you could scaffold in an afternoon. You're paying to skip the part nobody quotes for.
                                                                        • This is my daily driver, so I keep it current. Next.js and Astro majors, Sanity migrations, breaking plugin changes, I handle them and push the update. Your license includes every update for as long as I maintain it, which is for as long as I am using it myself.
                                                                        • The full repo on day one, a perpetual license, and lifetime updates included, not sold as a separate tier. One payment, no subscription. You own it forever.
                                                                        • Yes. The repo is delivered as private GitHub access: you enter your username at checkout, and access is granted to that exact account, including every future update. No account yet? Creating one takes a minute, then come back and buy.
                                                                        • Buyers get a private GitHub Discussions space, threaded and searchable, where I answer questions directly. For anything bigger, I am reachable by email. What you will not find is a Discord to get lost in or a support queue that routes you to a bot.
                                                                        • Tell me, and it gets fixed in the codebase, usually fast. A bug you hit is a bug my own client projects will hit too, so fixing it is in my interest as much as yours. The patch ships to everyone.
                                                                        • Because you get the full source on purchase, sales are final, the same way every serious code product works. Once the repo is cloned, it cannot be un-cloned. So I have put everything you need to decide up front: read the article series for the full reasoning, browse the real repo above, and look at the sites already shipped on it. If something is unclear before you buy, email me and I will answer honestly, sometimes that means telling you it is not the right fit.
                                                                        • It is a set of architectural decisions, made once over six years and committed, that gets you to the real work faster. You write real code on top of it. There is no no-code editor, no UI kit or component library to theme, no auth-billing-dashboard SaaS scaffolding, and no course wrapped around it, though the article series explains the reasoning behind it. You buy it once and own it.
                                                                        The content architecture
                                                                         /$$$$$$$$ /$$                                                       /$$            /$$$$$$              /$$                              
                                                                        |__  $$__/| $$                                                      | $$           /$$__  $$            | $$                              
                                                                           | $$   | $$$$$$$   /$$$$$$        /$$$$$$$   /$$$$$$  /$$   /$$ /$$$$$$        |__/  \ $$        /$$$$$$$  /$$$$$$  /$$   /$$  /$$$$$$$
                                                                           | $$   | $$__  $$ /$$__  $$      | $$__  $$ /$$__  $$|  $$ /$$/|_  $$_/           /$$$$$/       /$$__  $$ |____  $$| $$  | $$ /$$_____/
                                                                           | $$   | $$  \ $$| $$$$$$$$      | $$  \ $$| $$$$$$$$ \  $$$$/   | $$            |___  $$      | $$  | $$  /$$$$$$$| $$  | $$|  $$$$$$ 
                                                                           | $$   | $$  | $$| $$_____/      | $$  | $$| $$_____/  >$$  $$   | $$ /$$       /$$  \ $$      | $$  | $$ /$$__  $$| $$  | $$ \____  $$
                                                                           | $$   | $$  | $$|  $$$$$$$      | $$  | $$|  $$$$$$$ /$$/\  $$  |  $$$$/      |  $$$$$$/      |  $$$$$$$|  $$$$$$$|  $$$$$$$ /$$$$$$$/
                                                                           |__/   |__/  |__/ \_______/      |__/  |__/ \_______/|__/  \__/   \___/         \______/        \_______/ \_______/ \____  $$|_______/ 
                                                                                                                                                                                               /$$  | $$          
                                                                                                                                                                                              |  $$$$$$/          
                                                                                                                                                                                               \______/           
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                          /$$$$$$   /$$$$$$   /$$$$$$        /$$   /$$  /$$$$$$  /$$   /$$  /$$$$$$   /$$$$$$$                                                    
                                                                         |____  $$ /$$__  $$ /$$__  $$      | $$  | $$ /$$__  $$| $$  | $$ /$$__  $$ /$$_____/                                                    
                                                                          /$$$$$$$| $$  \__/| $$$$$$$$      | $$  | $$| $$  \ $$| $$  | $$| $$  \__/|  $$$$$$                                                     
                                                                         /$$__  $$| $$      | $$_____/      | $$  | $$| $$  | $$| $$  | $$| $$       \____  $$                                                    
                                                                        |  $$$$$$$| $$      |  $$$$$$$      |  $$$$$$$|  $$$$$$/|  $$$$$$/| $$       /$$$$$$$//$$                                                 
                                                                         \_______/|__/       \_______/       \____  $$ \______/  \______/ |__/      |_______/|__/                                                 
                                                                                                             /$$  | $$                                                                                            
                                                                                                            |  $$$$$$/                                                                                            
                                                                                                             \______/                                                                                             
                                                                        2026
                                                                        €399€301234567899012345678990123456789€549€501234567894012345678990123456789
                                                                        €399€301234567899012345678990123456789€549€501234567894012345678990123456789
                                                                        ⎇mainUpdated today