EmDash is version 0.1.0. The theme ecosystem is not yet what WordPress offers. That’s the honest truth. But the themes that do exist are built with modern tooling—Astro, TypeScript, Tailwind CSS—and they ship with zero PHP, zero legacy, and zero database access from the frontend. That alone makes them structurally superior to WordPress themes for anyone who values security and performance.
The counterargument is obvious: “WordPress has thousands of themes. EmDash has four.” True. But quantity without quality is noise. A WordPress theme can execute arbitrary PHP via functions.phpcode, opening your entire site to attack. An EmDash theme cannot perform database operations. It’s strictly a presentation layer. You aren’t choosing from a swamp of bloated templates—you’re choosing from a small set of well-architected starting points that you can extend with confidence.
You aren't choosing from a swamp of bloated templates—you're choosing from a small set of well-architected starting points that you can extend with confidence.
Here are the five themes you can download and customize today. Three are official starter templates. One is a blank canvas. One is the community’s first contribution.
1. Blog Theme
The default theme that ships with EmDash. Clean, minimal, responsive. Supports dark mode out of the box. It includes a post list, single post view, featured images, and basic pagination.
Download: Run npm create emdash@latestcode and select “blog” when prompted. Or deploy directly from the EmDash playground.
Customization: The theme lives in src/themes/blog/code. Edit Astro components, change CSS variables in the layout, swap colors in tailwind.config.jscode. You can add custom post types—projects, reviews—and the theme will display them automatically if you follow the content type naming conventions.
Why it matters: This theme is faster than any WordPress blog theme because it renders static HTML via Astro’s static generation. No PHP execution, no MySQL queries on each page load.
2. Portfolio Theme
Designed for freelancers and agencies. Includes project pages, client fields (name, year, link), a contact form pre-configured with Cloudflare Turnstile, and social link integration.
Download: Select “portfolio” during the npm create emdashcode setup. The wizard creates a fully functional site with sample projects.
Customization: Each project is a content type with custom fields: image, client name, year, description, external link. You can add new fields through the admin panel under Content Types → Projects. The frontend components are in src/themes/portfolio/code. To change the grid layout, edit the ProjectCard.astrocode component.
Why it matters: Portfolio sites on WordPress often require a page builder plugin like Elementor or Divi. This theme gives you the same visual control without the bloat—and without the security risk of a third-party builder.
3. Marketing Site Theme
A multi-page marketing layout with a hero section, feature grid, testimonial carousel, and call-to-action blocks. Built for startups and small businesses.
Download: Choose “marketing” during installation. You’ll get a homepage, about page, features page, and contact page.
Customization: The theme uses Astro’s content collections for each page. Edit the markdown or MDX files in src/content/pages/code. To add a new section, create a new component in src/components/code and include it in the layout. The theme includes a reusable section system—similar to WordPress widgets but defined in code, not the database.
Why it matters: WordPress marketing sites often rely on heavyweight page builders that slow down load times. This theme loads in under a second on a free Cloudflare plan, with no egress fees for images stored in R2.
4. Starter Theme (Blank Canvas)
The emptiest starting point. No sample content, no predefined layouts. Just a bare Astro project with EmDash’s core CMS wired up.
Download: Select “starter” during npm create emdashcode. You’ll get the admin dashboard, database connection, and media handling—but nothing on the frontend except a welcome message.
Customization: This is for developers who want full control. Create your own components, layouts, and content types from scratch. The starter includes the EmDash API client, so you can query content programmatically. You are not locked into any design decisions.
Why it matters: WordPress’s blank theme (twentytwentyfivecode) still includes PHP template hierarchy, action hooks, and filter functions. EmDash’s starter has none of that. It’s a clean TypeScript project. If you know Astro, you know this theme.
5. Community Theme: “Gutenberg Port” (Emerging)
Within days of EmDash’s launch, a Pantheon product manager created a pull request porting Gutenberg’s block editor into EmDash. It is not merged yet, but the code is available on GitHub.
Download: Fork the EmDash repository and apply the PR. Or watch the discussions for when it becomes an installable theme.
Customization: This theme brings the familiar WordPress block editor experience into EmDash’s structured content model. You can add blocks, reuse patterns, and edit inline. The underlying storage remains portable text (structured JSON), not HTML. That means your content stays machine-readable and AI-agent-friendly.
Why it matters: This is the first sign that EmDash’s ecosystem can grow organically. The theme was built by a community member using AI coding agents. It demonstrates that the MIT license and sandboxed plugin architecture attract developers who were repelled by WordPress’s GPL requirements and centralized review queues.
How to Customize Any EmDash Theme
All themes share the same customization workflow:
- Clone the project after installation. The theme code is in
src/themes/[theme-name]/code. - Edit components in
.astrocode files. Astro syntax combines HTML, CSS, and JavaScript in one file with scoped styles. - Override styling via Tailwind utility classes or custom CSS in
src/styles/code. - Add content types through the admin panel under Content Types. The theme automatically renders new types if you create matching templates.
- Deploy with one command:
npm run deploycode pushes to Cloudflare Workers, or you can build and host on any Node.js server.
The learning curve is steeper than WordPress’s theme customizer. But the payoff is a site that loads in milliseconds, scales to zero cost, and cannot be compromised by a plugin vulnerability.
Where to Find More Themes
The official templates are the only ones guaranteed to work today. But the community is active. Check the EmDash GitHub Discussions for user-contributed themes. The #themescode channel in the EmDash Discord (linked from the repo) has early experiments. As of this writing, there are three unofficial themes in development: a documentation site, a restaurant menu, and a podcast landing page.
WordPress has 24 years of theme history. EmDash has 24 days. The gap in quantity is real. But the gap in quality is already closing—and on security, it never existed.
- What themes are available for EmDash?Five themes are available: Blog, Portfolio, Marketing Site, Blank Canvas, and Community Theme.
- How can I customize an EmDash theme?You can edit Astro components in src/themes/[theme-name]/, override styling via Tailwind utility classes, and add content types through the admin panel.
- Where can I find more EmDash themes?Check the EmDash GitHub Discussions and the #themes channel in the EmDash Discord for user-contributed themes.