EmDash Guides

Getting Started with EmDash CMS

Install EmDash, run the setup wizard, publish your first post, and understand the project structure — all in under 15 minutes.

EmDash GuidesApril 28, 20262 min read

Prerequisites

Before you begin, make sure you have the following installed:

  • Node.js v22.12.0 or higher (odd-numbered versions are not supported)
  • npm, pnpm, or yarn
  • A code editor — VS Code is recommended

Create a New Project

Scaffold a new EmDash site with a single command:

npm create emdash@latest

Follow the interactive prompts to choose a project name and starter template. Once complete, navigate into your new directory:

cd my-emdash-site
npm install
npm run dev

Open http://localhost:4321 in your browser to see your site live.

Complete the Setup Wizard

On first launch, EmDash greets you with a Setup Wizard. Navigate to http://localhost:4321/_emdash/admin and you will be automatically redirected to it. Fill in:

  • Site Title — the name of your site
  • Tagline — a short one-line description
  • Admin Email — your email address

Click Create Site. Your browser will prompt you to register a passkey — a secure, password-free credential stored in your browser's password manager (Touch ID, Face ID, Windows Hello, or a hardware key). Once registered, you are automatically logged into the admin dashboard.

Note: EmDash uses passkey authentication instead of passwords by design. Passkeys are phishing-resistant and require no password manager setup.

Publish Your First Post

  1. In the admin sidebar, click Posts under Content.
  2. Click New Post.
  3. Enter a title and write content in the rich-text editor.
  4. Set the status to Published and click Save.

Your post goes live immediately — no rebuild step needed. EmDash uses Live Content Collections, so content changes are reflected in real time.

Project Structure

A freshly scaffolded EmDash project follows a standard Astro layout:

my-emdash-site/
├── astro.config.mjs      # Astro + EmDash integration config
├── src/
│   ├── live.config.ts    # Live Collections configuration
│   ├── pages/
│   │   ├── index.astro
│   │   └── posts/
│   │       └── [...slug].astro
│   ├── layouts/
│   │   └── Base.astro
│   └── components/
├── .emdash/
│   ├── seed.json         # Content type definitions
│   └── types.ts          # Auto-generated TypeScript types
└── package.json

Generate TypeScript Types

For full type safety across your Astro components, run:

npx emdash types

This creates .emdash/types.ts with interfaces for every collection in your database. Your editor will now autocomplete field names and catch type errors at build time.

Next Steps

Getting Started with EmDash CMS · emdash.market