• 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
                                                                            163
                                                                            164
                                                                            165
                                                                            166
                                                                            # 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).
                                                                            - **Real 404s**: an unknown path answers a genuine `404`, decided in `proxy.ts` before the response starts, rather than the `200` a streamed shell would return. Agents get a short Markdown recovery map instead of an error string. See [`docs/features/agent-404.md`](docs/features/agent-404.md).
                                                                            - **Published API description**: [`/openapi.json`](https://spec.openapis.org/oas/v3.1.0) describes the public endpoints for agents, titled from your Site singleton, alongside one JSON error shape (`error`, `code`, `hint`) across the API routes. See [`docs/features/openapi.md`](docs/features/openapi.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`
                                                                            - Real 404s (known-path gate in `proxy.ts`, Markdown recovery map): `docs/features/agent-404.md`
                                                                            - Published API description (`/openapi.json`) and the shared JSON error shape: `docs/features/openapi.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

                                                                            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.”
                                                                            Image

                                                                            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.”
                                                                            Image

                                                                            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.”
                                                                            Image

                                                                            Malik Kotb

                                                                            Web Designer & Engineer

                                                                            010012345678910123456789/03

                                                                            Slide 1 of 3

                                                                            Two editions. One architecture. Lifetime updates.

                                                                            Image
                                                                            Image
                                                                            Image
                                                                            Image
                                                                            Image

                                                                            trusted by 35+ 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 2 days ago
                                                                            Advertisement
                                                                            Advertisement