How to Set Up EmDash CMS in 10 Minutes

This is the exact, unpadded path from an empty terminal to a published first post on a local EmDash site. If you already have Node.js installed, the whole thing genuinely takes about 10 minutes, most of it spent typing your site title and writing a test post rather than waiting on anything.
Table of Contents
- Prerequisites
- Step 1: Scaffold the Project
- Step 2: Install Dependencies and Start the Dev Server
- Step 3: Complete the Setup Wizard
- Step 4: Publish Your First Post
- What You Just Got, Structurally
- Optional Next Step: Add More Content Types
- Frequently Asked Questions
- What if my Node.js version is too old?
- Do I need a database set up beforehand?
- Can I skip the passkey and use a password instead?
- What's next after the first post?
- The Bottom Line
Prerequisites
- Node.js v22.12.0 or higher (odd-numbered versions are not supported).
- npm, pnpm, or yarn.
- A code editor — VS Code is recommended but not required for this setup.
Step 1: Scaffold the Project
Run the create command and follow the prompts to name your project:
npm create emdash@latestpnpm and yarn work identically: `pnpm create emdash@latest` or `yarn create emdash`. The prompts ask for your project name and a few setup preferences — accepting the defaults is fine for a first run.
Step 2: Install Dependencies and Start the Dev Server
cd my-emdash-site
npm install
npm run devOnce the dev server starts, open your browser to http://localhost:4321. You should see your new site's homepage — empty for now, but running.
Step 3: Complete the Setup Wizard
- Navigate to http://localhost:4321/_emdash/admin.
- You'll be redirected to the Setup Wizard. Enter your Site Title, Tagline, and Admin Email.
- Click Create Site to register your passkey.
- Your browser will prompt you to create a passkey using Touch ID, Face ID, Windows Hello, or a security key.
Once your passkey is registered, you're logged in automatically and redirected to the admin dashboard — no password to set, remember, or reset later.
EmDash uses passkey authentication instead of passwords. Passkeys are more secure and work with your browser's built-in password manager.
Step 4: Publish Your First Post
- In the admin sidebar, click Posts under Content.
- Click New Post.
- Enter a title and write a few lines using the rich text editor.
- Set the status to Published and click Save.
- Visit your site's homepage — the post appears immediately.
That immediacy is deliberate: EmDash uses Live Content Collections, so content is served at runtime rather than baked in at build time, and edits appear without a rebuild step.
What You Just Got, Structurally
Your new project follows a standard Astro structure with a few EmDash-specific additions:
my-emdash-site/
├── astro.config.mjs # Astro + EmDash configuration
├── src/
│ ├── live.config.ts # Live Collections configuration
│ ├── pages/
│ │ ├── index.astro # Homepage
│ │ └── posts/
│ │ └── [...slug].astro # Dynamic post pages
│ ├── layouts/
│ │ └── Base.astro # Base layout
│ └── components/ # Your Astro components
├── .emdash/
│ ├── seed.json # Template seed file
│ └── types.ts # Generated TypeScript types
└── package.jsonOptional Next Step: Add More Content Types
Your first post used the default Posts collection. To model something specific to your site — a portfolio item, a product, a case study — open the Visual Schema Builder in the admin panel and create a new collection with the fields you need. No code required for the schema itself; you'll write the Astro template to render it once you're ready to build the public-facing page.
Frequently Asked Questions
What if my Node.js version is too old?
EmDash requires Node.js v22.12.0 or higher, and odd-numbered major versions (23, 25, etc.) aren't supported. Install or switch to an even-numbered LTS release — nvm or a similar version manager makes this a one-command fix.
Do I need a database set up beforehand?
No — the default local setup handles this for you as part of the dev server startup. You only need to configure an external database (PostgreSQL, libSQL, or Cloudflare D1) when you're ready to deploy to production.
Can I skip the passkey and use a password instead?
EmDash's authentication is passkey-based by default. If your browser or device doesn't support passkeys, check the current authentication documentation for supported fallback options rather than assuming one exists.
What's next after the first post?
From here, the natural next steps are modeling additional content types in the Visual Schema Builder, building out your Astro templates to render them, and — when you're ready to go live — choosing a deployment target (Node.js hosting or Cloudflare Workers).
The Bottom Line
Scaffold, install, start the dev server, complete the passkey setup wizard, publish a post — that's the entire path from zero to a working EmDash site, and it genuinely fits inside 10 minutes. From here, see our guide on how startups use this same setup to launch fast, or jump straight into modeling your actual content types.




Comments