Astro + Sanity starter

Ship client landings from one protected core

Tokens, SEO, consent-gated GTM, and a flexible contact API — compose sections without forking markup.

Built for repeatable client work

Core stays protected; clients get tokens and content.

Tokens

Reskin via @theme — no markup forks.

Sections

Named slots keep structure stable.

Integrations

Contact, consent, SEO already in core.

What teams say

“We ship landings without rewriting the shell.”

— Agency lead

“Tokens swapped in an afternoon.”

— Designer

“Agents stay in core; clients stay in config.”

— Maintainer

Simple pricing

Starter

$0 / demo

Compose the library on the demo page.

Client

Scoped / project

Tokens + content; core untouched.

Agency

Retain / ongoing

Reuse Nav→FAQ across clients.

FAQ

Do I fork components per client?

No — change tokens and content; keep core components.

Is Card a bordered box?

No — Card is a layout primitive with no default border or shadow.

Where does Sanity fit?

Schemas stay per-site later; pages own copy via slots now.

Contact

Existing ContactForm — unchanged.

Name & email map into data; message stays top-level. Payload:{ message, data, recaptchaToken }. reCAPTCHA v3 runs invisibly.