What is EmDash
What it is
EmDash is an open-source CMS built on Astro and Cloudflare. You install
it into an existing Astro project, get a full admin at
/_emdash/admin, and your content is authored against
collections you define - like a typed database you edit through a UI.
It runs on Cloudflare D1 for storage and R2 for media, or SQLite
locally in development.
What makes it different
Unlike traditional CMSes that sit in a separate process and speak to your site through an API, EmDash runs inside your Astro app. There is no external service, no API key, no CORS dance. Content is served by the same server that renders your pages.
That architecture is what makes PlugDash plugins possible. A plugin is just a module that hooks into the publish lifecycle and writes to the same database your site reads from. No webhooks required.
The stack
- Astro for rendering (server output mode)
- Cloudflare Pages or Node for hosting
- D1 (or SQLite locally) for the content database
- R2 for media storage
- Portable Text for rich content bodies
- React for the admin UI
Plugins and the admin
EmDash plugins can declare capabilities (read/write content, fetch
from external networks, register API routes, register editor block
types), subscribe to lifecycle hooks (content:afterSave,
content:afterDelete), and ship companion Astro components
that render plugin data in your theme.
The admin surfaces plugins automatically. When you install
@plugdash/callout, the callout block shows up in the
editor. When you install @plugdash/readtime, reading-time
metadata appears on every post.
Where to go next
- emdashcms.com - official docs
- PlugDash getting started - install your first plugin
- Installing plugins - code vs admin walkthrough