Skip to content

Getting Started

Code-first, single-schema CMS built inside an Astro app. ~6k lines of core engine.

Collections config generates everything: Drizzle tables, TypeScript types, and a runtime admin UI.

Supports Astro 7’s route caching with tag-based invalidation for static-speed content delivery.

Try live demo

Terminal window
pnpx create-kide-app
Command What it does
pnpm dev Start dev server (auto-generates schema, pushes to DB)
pnpm build Production build
pnpm check Type-check (astro check) + lint (eslint)
pnpm test Run the test suite (vitest)
pnpm format Format with Prettier
pnpm cms:generate Regenerate .generated/ from cms.config.ts
pnpm cms:seed Seed database with demo content
pnpm cms:mcp Start the local MCP server for AI-assisted editing
pnpm db:generate Generate migration SQL from schema changes
pnpm db:migrate Apply pending migrations

In dev mode, schema changes are pushed to the DB automatically. Migration files are for production deployments.

src/cms/
cms.config.ts # CMS config (database, locales, collection imports)
collections/ # One file per collection (schema, access rules)
access.ts # Auto-aggregated access rules (from collection configs)
hooks.ts # Lifecycle hooks
core/ # CMS runtime (editable)
.generated/ # Auto-generated (don't edit)
schema.ts # Drizzle tables
types.ts # TypeScript interfaces
validators.ts # Zod schemas
api.ts # Typed API

Set these in .env for local development or through your deployment platform. Production requirements are described in Deploy.

Variable Description
AI_PROVIDER AI provider (openai)
AI_API_KEY AI provider API key
AI_MODEL AI model name (e.g. gpt-4o-mini)
RESEND_API_KEY Enables automatic invite emails for new users
RESEND_FROM_EMAIL Email sender address
CMS_TRUSTED_ORIGIN Canonical public origin for admin CSRF checks
CRON_SECRET Secures the scheduled publishing endpoint

Astro 7, React 19, Drizzle ORM, SQLite (local) / D1 (Cloudflare), Zod, Tiptap, shadcn/ui, Tailwind CSS v4