
EmDash
A TypeScript content management system built on Astro, designed as a modern take on WordPress.
- Stars
- 14.1k
- Forks
- 1.4k
- Licence
- MIT
- Language
- TypeScript
- Last update
- 4 days ago
- Type
- App
What it is
EmDash is a content management system (CMS) for running websites and blogs, built with TypeScript on top of the Astro web framework. It includes an admin panel, REST API, authentication, media library, and a plugin system, and aims to offer what WordPress offers without PHP. Plugins run in sandboxed isolates, which the README says limits what a plugin can access.
- Run a blog with categories, tags, full-text search, and RSS using the Blog template
- Build a marketing landing page from modular blocks using the Marketing template
- Showcase creative work with the Portfolio template's project grid and tag filtering
- Import posts, pages, and media from a WordPress WXR export
- Let AI coding assistants manage content through the built-in MCP server or CLI
Great for
- Developers who already build sites with Astro and want a CMS built in
- Teams that want a WordPress-style admin panel with a typed, serverless-friendly stack
- Site owners considering Cloudflare hosting (D1, R2, Workers)
- Projects that want to migrate content from WordPress using the included import wizard
Not ideal for
- Non-technical users who need a fully hosted, no-setup service; the README covers self-hosting and deployment, not a managed host
- People who depend on the large existing WordPress plugin and theme ecosystem, since EmDash has its own plugin system
- Projects needing a long track record, because the README says first-party plugins are still on 0.x and may change
How to get it
- 1
Install with a package manager
You'll need: Node.js · npm
Create a new EmDash site
npm create emdash@latest - 2
Run it
- Run npm create emdash@latest to scaffold a site
- Choose a starter template: Blog, Marketing, or Portfolio
- Follow the project's setup prompts and start the dev server
- Open the admin panel to create content and collections
- 3
Get the most out of it
- Use the Cloudflare deploy button or the blog-cloudflare template to deploy to D1 and R2
- Generate TypeScript types from your live schema with npx emdash types
- Connect coding assistants through the agent skills, CLI, or built-in MCP server
- Write custom plugins with definePlugion-style capabilities such as content:read and email:send
- Import an existing WordPress site with the WXR import wizard
Downloads
Strengths
- Plugins run in sandboxed Worker isolates with declared capabilities, a stated answer to WordPress plugin security problems
- Content is stored as structured Portable Text JSON rather than HTML, so it can be reused across outputs
- Core packages follow semantic versioning and the README describes the project as stable
Trade-offs
- The README says it runs best on Cloudflare, so non-Cloudflare setups may have fewer tested paths
- First-party plugins and plugin tooling are still on 0.x and may change between minor releases
- Smaller plugin and theme ecosystem than WordPress, and the README does not compare plugin counts
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| emdash (this) | 14.1k | App | intermediate | 4 days ago | Developers who already build sites with Astro and want a CMS built in |
| Ghost | 55.7k | App | intermediate | 4 days ago | Writers or publishers who want to run their own blog or newsletter site |
| grav | 15.7k | App | intermediate | 4 days ago | Developers who want a PHP website without running a database |
| filament | 32.4k | Library | intermediate | 4 days ago | Laravel developers building internal admin panels |
| decap-cms | 19.5k | App | intermediate | 5 days ago | Teams that want non-developers to edit content on a static site |
| pretty-ts-errors | 14.1k | App | beginner | 5 days ago | Developers working in VS Code on TypeScript projects with complex or generic types |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.