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.
Quick Start
Section titled “Quick Start”pnpx create-kide-appCommands
Section titled “Commands”| 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.
Project Structure
Section titled “Project Structure”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 APIEnvironment Variables
Section titled “Environment Variables”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