Contributing to EmDash
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
Section titled “Local Setup”-
Clone and install
Terminal window git clone https://github.com/emdash-cms/emdash.gitcd emdashpnpm installpnpm build # required before first run -
Start the demo
Terminal window cd demos/simplepnpm devThe 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 -
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
Section titled “Development Workflow”Watch Mode
Section titled “Watch Mode”For iterating on core packages alongside the demo, run two terminals:
# Terminal 1 — rebuild packages/core on changecd packages/core && pnpm dev
# Terminal 2 — run the democd demos/simple && pnpm devChecks
Section titled “Checks”Run these before committing (from the repo root):
pnpm typecheck # TypeScriptpnpm lint # full type-aware lintpnpm format # auto-format (oxfmt, tabs)pnpm testcd packages/core && pnpm testcd packages/core && pnpm test --watchpnpm test:e2e # starts its own serverTests use real in-memory SQLite — no mocking. Each test gets a fresh database.
What Gets Accepted
Section titled “What Gets Accepted”| Type | Process |
|---|---|
| Bug fixes | Open a PR directly. Include a failing test. |
| Docs / typos | Open a PR directly. |
| Translations | Open a PR directly. See Translating EmDash. |
| Features | Open a Discussion and wait for a maintainer to approve it. |
| Refactors | Open 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.