EmDash is an Astro-native content management system. It brings familiar CMS patterns—collections, taxonomies, menus, widgets, and a polished admin UI—directly into your Astro site with full TypeScript support and portable deployment.
What EmDash Is
EmDash is a CMS built specifically for Astro. It uses Astro 6’s Live Content Collections to serve content at runtime without rebuilds. Content is stored in SQLite-compatible databases (D1, libSQL, local SQLite) and media in S3-compatible storage (R2, local filesystem).
Key characteristics:
- Database-first schema — Collections and fields are defined in the database, not code. Create and modify content types from the admin UI.
- Live Collections — Content changes are immediately available. No static rebuilds needed.
- Plugin system — WordPress-inspired hooks, storage, settings, and admin UI extensions.
- Cloud-portable — Runs on Cloudflare (Workers + D1 + R2), Node.js, local SQLite, and any S3-compatible storage.
What EmDash Is Not
- Not a headless CMS — EmDash is tightly integrated with Astro. It’s not a separate service you call via API.
- Not WordPress-compatible — No PHP, no WordPress plugins running directly. But WordPress content and concepts migrate cleanly.
- Not a page builder — EmDash focuses on structured content. For visual page building, use Astro components.
Who EmDash Is For
Agency developers
Spin up client sites quickly with reusable plugins and themes. No PHP security updates, no plugin conflicts.
Solo developers
Full-stack framework with CMS built in. No separate headless CMS to manage.
Content editors
Intuitive admin panel. Create and edit content without touching code.
WordPress users
Migration path for content and plugins. Modern tooling, familiar concepts.
Architecture at a Glance
┌─────────────────────────────────────────────────────────────┐
│ Your Astro Site │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ EmDash Integration │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │ │
│ │ │ Content │ │ Admin │ │ Plugins │ │ │
│ │ │ Engine │ │ Panel │ │ │ │ │
│ │ └─────────────┘ └─────────────┘ └──────────────┘ │ │
│ │ │ │
│ │ ┌───────────────────────────────────────────────────┐│ │
│ │ │ Data Layer ││ │
│ │ │ SQLite/D1 ←→ Kysely ←→ R2/S3/Local ││ │
│ │ └───────────────────────────────────────────────────┘│ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ Astro Framework │ │
│ │ Live Collections • Sessions • Middleware │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Core Concepts
Before diving in, familiarize yourself with these key concepts:
- Collections — Content types defined in the database (posts, pages, products, etc.)
- Fields — The properties of a collection (title, content, price, etc.)
- Taxonomies — Classification systems (categories, tags, custom taxonomies)
- Menus — Admin-editable navigation structures
- Widget Areas — Configurable content regions for sidebars and footers
- Plugins — Extensions that add functionality via hooks, storage, and UI
Next Steps
Get Started
Create your first EmDash site in under 5 minutes.
Explore Concepts
Learn about architecture and the content model.
Migrate from WordPress
Import your WordPress content and understand the concept mapping.