Repolode
emdash-cms

emdash-cms/emdash

A full-stack TypeScript CMS built on Astro that aims to bring WordPress-style extensibility and admin UX to serverless, with sandboxed plugins.

Open-source alternative to:WordPress

Stars
13,789
Forks
1,313
Open issues
318
Last commit
11 hours ago

What is it?

EmDash is a content management system written in TypeScript and built as an Astro integration. It targets the same use cases as WordPress, including blogs, marketing pages and portfolios, and provides an admin panel, REST API, authentication, media library and plugin system once added to an Astro config.

The main design difference is plugin isolation. Each plugin declares a capability manifest, such as content:read or email:send, and runs in a sandboxed Worker isolate on Cloudflare, or in a workerd child process on Node.js. Content is stored as Portable Text, a structured JSON format, rather than HTML. Content types are defined in the database and each collection maps to a SQL table, with TypeScript types generated from the live schema.

EmDash runs on Cloudflare (D1, R2, Workers) or on Node.js with SQLite, and also supports Turso, PostgreSQL, AWS S3 and local files through its storage and database abstractions. It includes a CLI, agent skills and a built-in MCP server for AI tools, and an importer for WordPress WXR exports and REST API data.

Key features

  • 01Plugins run in sandboxed Worker isolates with declared capability manifests.
  • 02Content is stored as Portable Text structured JSON rather than HTML.
  • 03Content types are defined in the database and editable through the admin UI.
  • 04Passkey-first authentication with OAuth and magic link fallbacks and role-based access.
  • 05Built-in MCP server and CLI for AI tools and programmatic site management.
  • 06Imports posts, pages, media and taxonomies from WordPress exports and APIs.

Use cases

  • Migrating an existing WordPress blog or marketing site to a serverless Astro stack.
  • Building a content-driven site on Cloudflare with D1 and R2.
  • Publishing structured content to web, mobile or email from one source.
  • Letting AI assistants read and manage site content through MCP.

Quick start

  1. 1

    Create a new EmDash site with the scaffolder

    npm create emdash@latest
  2. 2

    Optionally deploy directly to your Cloudflare account using the deploy button

Things to know

  • First-party plugins and plugin tooling are still on 0.x and may change between minor releases.
  • Running it fully on Cloudflare is the best-supported path; other platforms are portable but less central.

Topics

FAQ

What is emdash?
A full-stack TypeScript CMS built on Astro that aims to bring WordPress-style extensibility and admin UX to serverless, with sandboxed plugins. EmDash is a content management system written in TypeScript and built as an Astro integration. It targets the same use cases as WordPress, including blogs, marketing pages and portfolios, and provides an admin panel, REST API, authentication, media library and plugin system once added to an Astro config.
Is emdash free to use? What license does it have?
emdash is open source under the MIT license. Check the license terms before using it in commercial products.
Is emdash still maintained?
Actively maintained. The last commit to emdash was on Oct 19, 2026.
What can I use emdash for?
Migrating an existing WordPress blog or marketing site to a serverless Astro stack. Building a content-driven site on Cloudflare with D1 and R2. Publishing structured content to web, mobile or email from one source. Letting AI assistants read and manage site content through MCP.
How do I install emdash?
Create a new EmDash site with the scaffolder: npm create emdash@latest Optionally deploy directly to your Cloudflare account using the deploy button
Where can I get emdash?
The source code and installation instructions are on GitHub: https://github.com/emdash-cms/emdash

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects