on-ramp

What is EmDash

340 words·3min read

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

built with plugdash