Skip to content

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
Step-by-step guide: how to use EmDashInstall, first run, examples, tips and FAQs

How to get it

  1. 1

    Install with a package manager

    You'll need: Node.js · npm

    Create a new EmDash site

    npm create emdash@latest
  2. 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. 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

ProjectStarsTypeLevelUpdatedBest for
emdash (this)14.1kAppintermediate4 days agoDevelopers who already build sites with Astro and want a CMS built in
Ghost55.7kAppintermediate4 days agoWriters or publishers who want to run their own blog or newsletter site
grav15.7kAppintermediate4 days agoDevelopers who want a PHP website without running a database
filament32.4kLibraryintermediate4 days agoLaravel developers building internal admin panels
decap-cms19.5kAppintermediate5 days agoTeams that want non-developers to edit content on a static site
pretty-ts-errors14.1kAppbeginner5 days agoDevelopers 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.