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

Full-stack kit for Next.js and Astro.

The stack agents don't reinvent.

Frontend, Sanity schema, fetch layer, SEO, redirects, forms: six years of decisions, committed. AGENTS.md and a dozen skills load them before your first prompt, and two MCP servers let the agent check its own work.
GetGet
accessaccess

The next 3 days are yours.

GetGet
accessaccess

One short email when the repo changes or a discount goes live.

Resources

  • BlogBlog
  • RoadmapRoadmap

Legal

  • Privacy PolicyPrivacy Policy
  • Terms Of ServiceTerms Of Service

© The Content Architecture

Built by edoardolunardi.dev

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

This is the part nobody quotes for and everybody rebuilds. Days gone before the real work starts.
~24
hours lost per project3 full days

EstimateNever quoted

Day 01~8 hrs

Page builder schema + preview~5

Stale content after publish~3

Day 02~8 hrs

Draft mode + live preview~4

Studio editors can actually use~3

Contact form + spam guard~1

Day 03~8 hrs

SEO, OG images, sitemaps~2

The same 12 components, again~2

Redirects, analytics, Mux~2

Biome, Prettier, git hooks~1

Basic auth for staging~1

Every prompt

Agent redesigns the architecture∞

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, deployment, 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.
Files

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
                                                                              # The Content Architecture (Next.js)A modern Next.js 16.3 starter with Sanity CMS integration: content model, in-app Studio, and product features, running on a Next.js App Router frontend.## Features- Next.js 16.3 with the App Router and Server Components: the Studio and the API routes live on the same origin as the site- Sanity CMS with the Studio mounted at `/studio`- The pages model: a catch-all route renders any `page` document by its `uri`, homepage included- Reusable page builder (text, media, headline, CTA, contact form sections) rendered by self-fetching Server Components- Rich text via Portable Text with media blocks, inline media, links, colors- Media pipeline: Sanity images (responsive srcset + LQIP), Mux video, native video, Lottie, and Rive- Draft mode with the Presentation tool, Sanity Live, and Visual Editing overlays- SEO helpers: per-page metadata with Site singleton fallbacks, og:image cropping, per-scheme favicons plus a stable `/favicon.ico` for Google, JSON-LD, CMS-driven sitemap and robots- **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).- **HTTP Basic Auth (optional)**: `proxy.ts` gates the site or individual URLs using `BASIC_AUTH_*` environment variables and CMS toggles (Site, Security; per-entry "Password protect"). See [`docs/features/basic-auth.md`](docs/features/basic-auth.md).- **RSS feed**: [`/feed.xml`](docs/features/rss-feed.md) serves the blog as RSS 2.0 with full article bodies, autodiscovered from the blog pages.- **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, so one that followed a stale link can re-orient. 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).- CMS-managed redirects baked into the build from the Settings singleton- Feature modules for Umami analytics and spam prevention- Scaffolding via Plop for repeatable section/route/block generation- **A superset you can trim**: `npm run trim` removes a feature you do not need (blog, legal pages, contact form, the form layer, the announcement bar, Umami, the OpenAPI description, a media kind, a page-builder section) across its files, registries, docs, dependencies and Sanity content, or refuses to start. See [`docs/features/trimming-features.md`](docs/features/trimming-features.md).- Starter **seed dataset** (`seed/`), imported by `npm run sanity:project-setup` so a new project boots with example content- Contact form with honeypot + timing spam prevention and Resend notifications- [`@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```bashnpm install```### Environment VariablesCopy `.env.example` to `.env` and fill it in. The minimum for local dev:```envNEXT_PUBLIC_URL=http://localhost:3000NEXT_PUBLIC_SANITY_PROJECT_ID=your-project-idNEXT_PUBLIC_SANITY_DATASET=productionNEXT_PUBLIC_SANITY_API_VERSION=2025-02-19NEXT_PUBLIC_SANITY_STUDIO_BASE_PATH=/studioSANITY_API_VIEW_TOKEN=your-view-tokenSANITY_API_EDIT_TOKEN=your-edit-token````npm run sanity:project-setup` creates the project, both tokens, CORS entries, and writes `.env` for you.`NEXT_PUBLIC_SANITY_STUDIO_BASE_PATH` is the **public** URL for Studio. The 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. Turn protection on in Sanity (site-wide and/or per document with "Password protect"); credentials are not stored in the CMS. Full behavior: [`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`):```bashnpm run sanity:dataset-import -- --file seed/seed-dataset.tar.gz```See [`docs/sanity/seed-dataset.md`](docs/sanity/seed-dataset.md).### Development```bashnpm run dev```- Site: [http://localhost:3000](http://localhost:3000)- Studio: `http://localhost:3000` + your `NEXT_PUBLIC_SANITY_STUDIO_BASE_PATH` (default `/studio`)### Build```bashnpm run buildnpm run start````next build` prerenders every page into a static shell with a one-year lifetime, so a deploy is not what refreshes content: publishing in the Studio is. That takes a Sanity webhook pointed at `/api/revalidate`, created once by hand and secured with `SANITY_REVALIDATE_SECRET`. See [`docs/sanity/revalidation-and-caching.md`](docs/sanity/revalidation-and-caching.md).## DocsFeature-level docs live in `docs/` so the root README stays lightweight. Start at [`docs/README.md`](docs/README.md).## Scripts- `npm run dev`: Start the dev server (site + Studio + APIs)- `npm run build`: Build for production (`next build`)- `npm run start`: Start the 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 and fix with Biome (`biome check --write --unsafe`)- `npm test`: Run the unit tests- `npm run plop`: Scaffold new sections, prefix routes, and rich text blocks- `npm run trim`: Interactively remove a feature you do not need (code, docs, dependencies, and optionally its Sanity content)- `npm run trim -- --status`: What this project has of the starter: each feature's state, its content per dataset, and the code that imports it- `npm run trim -- --dataset-only --dry-run`: Report Sanity content whose type the schema no longer declares; drop `--dry-run` to delete it- `npm run trim:update`: Take the starter's current trim into this project, keeping `scripts/trim-features/project.json`- `npm run clear`: Remove local build and cache output (`.next`, `node_modules/.cache`)- `npm run sanity:typegen`: Extract the Sanity schema and generate `sanity/types.ts`- `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/`- `npm run sanity:dataset-import`: Restore a `.tar.gz` into a dataset- `npm run sanity:dataset-migrate`: Copy one dataset into anotherEvery `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, and `.env`## Project Structure```text.|-- app/|   |-- (web)/           # Site routes ([[...uri]] is the pages model) and the page shell|   |-- api/             # Route handlers (served at /api/*)|   `-- sanity-studio/   # Studio mount, rewritten to your public Studio path|-- components/          # Shared React components (Button, Icon, Dialog)|-- features/            # Feature modules (page-builder, site, agents, sanity, rich-text, style, ...)|-- public/              # Static assets|-- sanity/              # Sanity Studio config, schema, structure (standalone folder)|-- seed/                # Starter dataset shipped with the template|-- scripts/             # Dataset + project-setup CLIs|-- templates/           # Plop templates|-- docs/                # Project documentation|-- proxy.ts             # Basic Auth + agent Markdown negotiation + real 404s|-- env.ts               # Typed environment config`-- next.config.ts       # Cache Components, Studio rewrite, CMS redirects```## Agent SkillsAI 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)## LicenseCommercial, 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

                                                                              2026. Studio: Good Fella. Awards: Awwwards Site of the Day, FWA of the Day, CSSDA Website of the Day.

                                                                              3 awards / 2026

                                                                              House of Honey website built on The Content Architecture

                                                                              House of Honey

                                                                              2026. Design: Eva Landaluce. Development: Edoardo Lunardi. Awards: Awwwards Site of the Day, Awwwards Developer Award, Awwwards Honorable Mention, FWA of the Day, CSSDA Website of the Day, CSSDA Best UI, CSSDA Best UX, CSSDA Best Innovation, Muzli Picks.

                                                                              9 awards / 2026

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

                                                                              Aspen Search

                                                                              2026. Agency: Code Resolution. Design: Louis Saville. Development: Edoardo Lunardi. Awards: Awwwards Site of the Day, Awwwards Developer Award, Awwwards Honorable Mention, FWA of the Day, CSSDA Website of the Day, CSSDA Best UI, CSSDA Best UX, CSSDA Best Innovation.

                                                                              8 awards / 2026

                                                                              Anuc Home website built on The Content Architecture

                                                                              Anuc Home

                                                                              2025. Design: Eva Landaluce. Development: Edoardo Lunardi. Awards: Awwwards Site of the Day, Awwwards Developer Award, Awwwards Honorable Mention, FWA of the Day.

                                                                              4 awards / 2025

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

                                                                              Edoardo Lunardi

                                                                              2025. Awards: Awwwards Site of the Day, Awwwards Developer Award, Awwwards Honorable Mention, FWA of the Day, CSSDA Best UI, CSSDA Best UX, CSSDA Best Innovation, CSSDA Special Kudos, WD Awards Site of the Day.

                                                                              9 awards / 2025

                                                                              Serve Robotics website built on The Content Architecture

                                                                              Serve Robotics

                                                                              2026. Agency: wild. Design: Eva Landaluce, Monde Marafane. Development: Edoardo Lunardi. Awards: Awwwards Site of the Day, Awwwards Developer Award, Awwwards Honorable Mention.

                                                                              3 awards / 2026

                                                                              Prism website homepage with headline “Unlocking Protein Dynamics”

                                                                              Prism

                                                                              2026. Design: Benjamin Kuehn, Louis Saville. Development: Edoardo Lunardi.

                                                                              2026

                                                                              Muralia website built on The Content Architecture

                                                                              Muralia

                                                                              2025. Design: Sebastian Wieser. Development: Edoardo Lunardi. Awards: Awwwards Honorable Mention, CSSDA Special Kudos.

                                                                              2 awards / 2025

                                                                              blink website built on The Content Architecture

                                                                              blink

                                                                              2026. Design: Sebastian Wieser. Development: Edoardo Lunardi.

                                                                              2026

                                                                              Creative Lives in Progress website built on The Content Architecture

                                                                              Creative Lives in Progress

                                                                              2025. Agency: wild. Design: Monde Marafane, Anna Mitterhauser. Development: Edoardo Lunardi, Alex Pagnotta.

                                                                              2025

                                                                              The Content Architecture

                                                                              2026. Design: Edoardo Lunardi. Development: Edoardo Lunardi.

                                                                              2026

                                                                              “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 40+ engineers

                                                                              One-time, per edition
                                                                              • 01
                                                                                Next.js 16 + Sanity v6 repo
                                                                                Astro 7 + Sanity v6 repo
                                                                              • 02
                                                                                Unlimited commercial projects
                                                                              • 03
                                                                                Lifetime updates
                                                                              • 04
                                                                                Agent-ready: skills, MCP, llms.txt
                                                                              • 05
                                                                                Direct support from the maintainer
                                                                              Edition
                                                                              GetGet
                                                                              accessaccess
                                                                              GetGet
                                                                              accessaccess
                                                                              For Next.js + Sanity engineers, not no-code.
                                                                              For Astro + Sanity engineers, not no-code.
                                                                              Sales are final. Student, or already own one edition? Email me for 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.
                                                                              €549€501234567890123456789401234567890123456789901234567890123456789
                                                                              2026
                                                                              ⎇mainUpdated yesterday