Contributing to EmDash

On this page

EmDash is a pnpm monorepo. The main package is packages/core (published as emdash) — it contains the Astro integration, REST API, database layer, schema management, and plugin system. The admin UI lives in packages/admin.

For the full contributor reference — repo layout, architecture, code conventions, changeset policy — see CONTRIBUTING.md.

Local Setup

  1. Clone and install

    git clone https://github.com/emdash-cms/emdash.git
    cd emdash
    pnpm install
    pnpm build    # required before first run
  2. Start the demo

    cd demos/simple
    pnpm dev

    The setup wizard runs automatically on first launch — it creates the database, runs migrations, and prompts you to create an admin account.

    To populate with sample content: pnpm seed

  3. Open the admin

    Visit http://localhost:4321/_emdash/admin

    In dev mode, you can skip passkey auth with the bypass endpoint:

    http://localhost:4321/_emdash/api/setup/dev-bypass?redirect=/_emdash/admin

Development Workflow

Watch Mode

For iterating on core packages alongside the demo, run two terminals:

# Terminal 1 — rebuild packages/core on change
cd packages/core && pnpm dev

# Terminal 2 — run the demo
cd demos/simple && pnpm dev

Checks

Run these before committing (from the repo root):

pnpm typecheck    # TypeScript
pnpm lint         # full type-aware lint
pnpm format       # auto-format (oxfmt, tabs)

Tests

All tests

pnpm test

Core only

cd packages/core && pnpm test

Watch mode

cd packages/core && pnpm test --watch

E2E

pnpm test:e2e    # starts its own server

Tests use real in-memory SQLite — no mocking. Each test gets a fresh database.

What We Accept

TypeProcess
Bug fixesOpen a PR directly. Include a failing test.
Docs / typosOpen a PR directly.
TranslationsOpen a PR directly. See Translating EmDash.
FeaturesOpen a Discussion and wait for a maintainer to approve it.
RefactorsOpen a Discussion first.

Feature PRs without prior maintainer approval will be closed.

For the full contribution policy, changeset guide, repo layout, and architecture overview, see CONTRIBUTING.md.