Introduction
What astro-ignite is, why it exists, and what it gives you out of the box.
astro-ignite is a shadcn-style CLI for bootstrapping production-grade Astro sites built for AI agents. You get a finished site with SEO, i18n, performance, legal, and email pre-wired.
Why bother
Most Astro starters land at one of two extremes: a minimal hello world you assemble yourself, or an opinionated framework that hides decisions behind abstractions. astro-ignite picks a different point — opinionated defaults you fully own.
You get:
- Lighthouse 100s on mobile out of the box, CI-enforced
- Native i18n with one code path for monolingual and multilingual sites
- Typed Schema.org JSON-LD built from
schema-dts - A working contact form with Astro Actions, Zod, and your choice of Resend or SMTP
- Cookie banner + legal templates that don’t pretend to be legal advice
- Self-hosted Geist Sans + Mono with zero CLS on swap
- Pure-Astro components — no React/Vue/Svelte runtime weighing down the page
Architecture
- Shadcn-style CLI, not a framework.
create-astro-igniteis a one-shot scaffolder. Once installed it’s gone from yournode_modules— no imports, no plugin, no auto-update, no telemetry. - Three concerns, three packages. The CLI lives in
packages/create-astro-ignite/. The real Astro projects live inpackages/templates/<kind>/(starter,docs, …). A shadcn-style component registry lives inpackages/registry/. The CLI assembles a template; the registry’s atoms ship pre-installed. - Apps are canonical scaffolded outputs.
apps/siteandapps/docsare mirrors generated from the templates, not sources.
Tech stack
- Astro 6 with native i18n, content collections, and Astro Actions (
@astrojs/node@^10adapter) - Tailwind v4 below the fold + scoped
<style>above the fold; Beasties extracts critical CSS at build time - CSS variables for design tokens; tri-state dark mode via class flip
- Astro + vanilla JS for every component — no React/Vue/Svelte/Radix anywhere. Native HTML primitives first (
<details>,<dialog>, popover API); custom elements when native won’t do schema-dtstyped JSON-LD composed via@graph- Astro Actions + Zod + Resend or SMTP for the contact form
- Plausible, env- and consent-gated; self-hosted Geist Sans + Mono
- [email protected] workspaces, tsup for the CLI, vitest, changesets, Lighthouse CI (mobile + desktop, hard gate)
What it isn’t
astro-ignite is not a framework. The astro-ignite package on npm is a CLI for bootstrapping and maintaining your project — it never becomes a runtime dependency of the scaffolded site. After scaffolding, you own every line and can edit anything. Eject is free because there’s nothing to eject.
It’s also not a CMS, an auth system, or an e-commerce starter. It’s a site bootstrap.
Where to next
For a tour of what you get out of the box, head to Features. If you want to see code, jump straight to Quick start.