emdash-cms / emdash
git clone https://github.com/emdash-cms/emdash.git
@emdash-cms/plugin-test@0.2.10 · 2d ago
🔥 on GitHub Trending today
EmDash is a full-stack TypeScript CMS based on Astro; the spiritual successor to WordPress
+48
stars, 24h · #204
—
stars, 7 days
—
stars, 30 days
14k
★ total
1.3k
forks · 327 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageTypeScript
LicenseMIT
Created2026-04-01 (6mo ago)
Last pushtoday
Watchers73
OwnerOrganization
Seen on GitHub Trending
- 2026-10-20 — #9 daily in typescript · +48 ★
GitHub topics
Links
- GitHub: github.com/emdash-cms/emdash
- Homepage: https://emdashcms.com
- Releases · Issues · Hacker News mentions
README excerpt
# EmDash A full-stack TypeScript CMS built on Astro. EmDash takes the ideas that made WordPress dominant -- extensibility, admin UX, a plugin ecosystem -- and rebuilds them on serverless, type-safe foundations. Plugins run in sandboxed Worker isolates, solving the fundamental security problem with WordPress's plugin architecture. ## Get Started [code] Or deploy directly to your Cloudflare account: EmDash runs on Cloudflare (D1 + R2 + Workers) or any Node.js server with SQLite. No PHP, no separate hosting tier -- just deploy your Astro site. ## Templates EmDash ships with three starter templates: ### Blog A classic blog with sidebar widgets, search, and RSS. - Categories & tags - Full-text search - Comment-ready - RSS feed - Dark / light mode ### Marketing A photo-led landing page built from modular blocks. - Hero with photo and CTAs - Logo wall, features and stats - Text and photo sections - Pricing, FAQ and closing CTA - Dark / light mode ### Portfolio A visual portfolio for showcasing creative work. - Project grid - Tag filtering - Case study pages - RSS feed - Dark / light mode ## Why EmDash? **WordPress was built for a different era.** Running WordPress today means managing PHP alongside JavaScript, layering caches to get acceptable performance, and knowing that 96% of WordPress security vulnerabilities come from plugins. EmDash is what WordPress would look like if you started from scratch with today's tools. **Sandboxed plugins.** WordPress plugins have full access to the database, filesystem, and user data. A single vulnerable plugin can compromise the entire site. EmDash plugins run in isolated Worker sandboxes via Dynamic Worker Loaders, each with a declared capability manifest. A plugin that requests `content:read` and `email:send` can do exactly that and nothing else. [code] **Structured content, not serialized HTML.** WordPress stores rich text as HTML with metadata embedded in comments -- tying your content to its DOM representation. EmDash uses Portable Text, a structured JSON format that decouples content from presentation. Your content can render as a web page, a mobile app, an email, or an API response without parsing HTML. **Built for agents.** EmDash publishes agent skills that teach coding assistants its APIs, a CLI that lets agents manage content and schema programmatically, and a built-in MCP server so AI tools like Claude and ChatGPT can interact with your site directly. **Runs anywhere.** EmDash uses portable abstractions at every layer -- Kysely for SQL, S3 API for storage -- that work with SQLite, D1, Turso, PostgreSQL, R2, AWS S3, or local files. It runs best on Cloudflare, but it's not locked to it. ## How It Works EmDash is an Astro integration. Add it to your config and you get a complete CMS: admin panel, REST API, authentication, media library, and plugin system. [code] Content types are defined in the database, not in code. Non-developers create and modify collections through the admin UI. Each collection get