# 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

<Callout variant="note" title="Pre-1.0">
  The API and template shape may shift between minor versions. See the
  ROADMAP for what's stable and what's not.
</Callout>

## Architecture

- **Shadcn-style CLI, not a framework.** `create-astro-ignite` is a one-shot scaffolder. Once installed it's gone from your `node_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 in `packages/templates/<kind>/` (`starter`, `docs`, …). A shadcn-style component registry lives in `packages/registry/`. The CLI assembles a template; the registry's atoms ship pre-installed.
- **Apps are canonical scaffolded outputs.** `apps/site` and `apps/docs` are mirrors generated from the templates, not sources.

## Tech stack

- **Astro 6** with native i18n, content collections, and Astro Actions (`@astrojs/node@^10` adapter)
- **Tailwind v4** utilities resolving the `--color-*` design tokens; scoped `<style>` only where Tailwind can't reach (keyframes, view-transition selectors); `inlineStylesheets: 'always'` puts the full stylesheet in the HTML on first paint — no separate critical-CSS step
- **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-dts`** typed 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**
- **pnpm@9.15.0** 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**.
