Building the Stay Fly Media Portfolio with EmDash

Building the Stay Fly Media Portfolio with EmDash
Stayflymedia.com homepage

Building the Stay Fly Media Portfolio with EmDash

When I sat down to finally build a proper portfolio site for Stay Fly Media, I had a list of options I've worked through before: spin up WordPress (no thanks), hand-roll something in vanilla HTML, or find something in between that wouldn't make me regret it six months later. Then, right on cue, Cloudflare dropped EmDash — and it was almost too perfectly timed.

What is EmDash?

EmDash is a rebuild of the WordPress CMS, but in TypeScript rather than PHP, built on top of Astro — which Cloudflare acquired earlier this year. The Register The pitch is simple: it's a modern replacement for WordPress that takes the best parts of the past and mixes them with today's best tech. OSTechNix But what actually made me stop scrolling was the security architecture.

96% of WordPress security vulnerabilities stem from plugins having unrestricted access to the site's filesystem and database. EmDash addresses this with sandboxed plugins — each one runs in its own isolated Worker sandbox with a declared capability manifest. A plugin that requests read:content and email:send can do exactly that and nothing else. OSTechNix That's the kind of zero-trust thinking I appreciate in my homelab stack, and it's nice to see it applied to something as historically messy as a CMS plugin ecosystem.

Why It Made Sense for Stay Fly

I needed something that could grow with a media business without becoming a maintenance burden. EmDash ships with simple templates for visual portfolios — project grids, tag filtering, case study pages, RSS feeds, and dark/light mode. GitHub That's basically the entire feature checklist for what a Stay Fly client-facing portfolio needs, without touching a line of config before the structure is already there.

Deployment was equally clean. One-click deploys to Cloudflare Workers, Netlify, or Vercel are all supported, and it runs on any modern hosting platform Joost — though the Cloudflare path with D1 for the database and R2 for storage is the most polished. Given I'm already deep in the Cloudflare ecosystem for other projects, this was a natural fit.

The AI-Native Part (This Is the Interesting Bit)

Here's where EmDash gets genuinely different from anything I've used before. Every architectural decision seems to have been made with the same question: "What if an AI agent needs to do this?" Content is stored as portable text — structured JSON, not HTML strings — which means an agent can read, modify, and generate content without parsing markup. Joost

Every EmDash instance ships with its own remote MCP server, allowing Claude or any other agent to create content types, manage entries, configure plugins, and deploy — all programmatically. Cloudflare I use Claude constantly for content drafts, and having it able to push structured content directly into the CMS through MCP rather than copy-pasting into an editor changes the workflow in a real way.

The CLI outputs JSON, and the documentation is structured for machine consumption. Joost That might sound like a niche selling point, but for someone who builds n8n automations for content pipelines, having a CMS that's designed from the ground up to be orchestrated programmatically is legitimately exciting.

The Build

Getting the portfolio up was fast. The visual portfolio template gave me the project grid structure out of the box. I customized the color palette and typography to match the Stay Fly brand, and the Astro foundation meant the performance baseline was already excellent — no plugin soup dragging down load times, no PHP stack to think about.

The admin UI is familiar enough that it doesn't require a mental context switch from other CMS work. Editing happens on the frontend — you see your actual site while you edit it, not a disconnected admin panel. Joost That's a small thing that makes a big difference when you're quickly updating project listings.

Worth the Early Adoption Risk?

EmDash is at v0.1.0. The ecosystem is thin compared to WordPress, and CMS adoption is historically driven more by available plugins and themes than by technical merit Joost — that chicken-and-egg problem is real. But for a focused use case like a media portfolio, you don't need a sprawling plugin ecosystem. You need something fast, secure, and easy to maintain.

This checked all three boxes. The Stay Fly portfolio is live, the MCP integration is already part of my content workflow, and I'm not dreading the next time I need to update it. That's the bar.

www.stayflymedia.com