Getting Started
Understand what EmDash CMS is, what stack it is built on, and the best way to launch an official EmDash content site today.
What EmDash CMS is
EmDash CMS is positioned publicly as a full-stack TypeScript CMS built on Astro and designed to run especially well on Cloudflare. The product keeps several concepts people already understand from WordPress, including:
- collections and content types
- taxonomies, menus, and widgets
- an admin interface for editors
- a plugin model for extending site behavior
The difference is that EmDash is built around modern frontend tooling, typed content, and Cloudflare-native deployment options instead of PHP hosting.
What makes it different from a typical CMS
From the official public docs and repository materials, a few themes are consistent:
- EmDash is Astro-native, not a separate SaaS you call over an API
- it uses TypeScript throughout the stack
- it is designed to be cloud-portable
- its plugin model is built around sandboxed execution on Cloudflare Worker isolates
- it uses structured content rather than tying everything to WordPress-style HTML storage
That combination is what makes it interesting for a public-facing ecosystem site like emdashcmseverything.com.
Recommended first version for this website
Even though EmDash itself supports a runtime CMS architecture, the best first version of this website is still a static Astro content site.
For this project, the recommended stack is:
Astrofor the site frameworkMDXfor long-form content and resource pagesCloudflare Pagesfor low-cost hostingGit + AI editingfor ongoing publishing
This is the right starting point because your site is primarily:
- documentation
- FAQ and migration guidance
- plugin and template directory content
- updates, tutorials, and product education
Those needs do not require database-backed editing on day one.
Why not deploy the full EmDash runtime immediately
EmDash can run on Cloudflare Workers with D1 and R2, and that is an important part of the product story. But for this site, starting directly on the full runtime would increase infrastructure cost and setup complexity before it gives you much benefit.
The static-first version gets you:
- fast deployment on Cloudflare Pages
- simpler Git review and easier AI collaboration
- no admin auth or storage setup required for launch
- a cleaner path to iterate on messaging and information architecture
Later, if you need browser-based editorial workflows, authenticated submissions, or richer media handling, you can move selected sections into a full EmDash runtime deployment.
Local development
The current project is organized intentionally:
src/contains routes, layouts, and reusable componentsdocs/contains the published MDX content
That means content work and frontend work are separated cleanly.
Run the site locally with:
npm install
npm run dev
Build the static site with:
npm run build
Cloudflare Pages deployment
For the current static site, Cloudflare Pages should use:
- Build command:
npm run build - Output directory:
dist
This gives you a near-zero-ops public website.
When to move to Workers, D1, and R2
The official EmDash materials make it clear that the runtime stack is strongest when you need real CMS behavior, especially:
- live content updates without rebuilds
- database-backed collections
- browser-based admin editing
- passkey or Cloudflare Access authentication
- media storage in R2
- sandboxed plugins on Workers
That is the right time to graduate from Pages-only delivery to the full EmDash platform.
Recommended next steps
If you are launching an official EmDash ecosystem site, the practical order is:
- Publish the public site on Astro and Cloudflare Pages
- Build out docs, FAQ, migration guides, plugin pages, and template pages
- Use the site to validate positioning and publishing workflow
- Introduce full EmDash runtime features only when editorial or ecosystem workflows genuinely need them