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 React admin UI lives in packages/admin.
This page gives you the quickest path to a working development environment. CONTRIBUTING.md is the canonical source for prerequisites, repository layout, contribution policy, required checks, changesets, and pull request requirements.
Local setup
-
Clone, install, and build the workspace.
git clone https://github.com/emdash-cms/emdash.git cd emdash pnpm install pnpm build -
Start the primary development demo.
cd demos/simple pnpm devThe demo runs on Node.js with SQLite at
http://localhost:4321. On the first request, it applies the schema fromseed/seed.json; the development bypass in the next step also adds its sample content. -
Open the admin panel.
For the fastest local setup, open the development bypass. It runs migrations, creates a development administrator, signs you in, and redirects to the admin panel.
To test the passkey setup flow instead, open the admin panel. The setup wizard creates the database, runs migrations, and prompts you to create an administrator account.
Development workflow
Watch mode
When you change packages/core while running the demo, use two terminals so the package rebuilds automatically:
# Terminal 1 — rebuild packages/core on change
cd packages/core && pnpm dev
# Terminal 2 — run the demo
cd demos/simple && pnpm dev
Checks
Run the required checks from the repository root before you commit:
pnpm typecheck # TypeScript
pnpm lint # full type-aware lint
pnpm format # auto-format with oxfmt and Prettier
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 databases instead of database mocks. Each test gets a fresh database.
Choose a contribution path
Bug fixes, documentation, tests, translations, chores, and behavior-preserving refactors or performance changes can go directly to an implementation pull request. A feature needs an accepted feature plan or RFC before implementation. Read the full contribution policy before starting work so you know which path applies.
CONTRIBUTING.md also links the canonical governance, roadmap, triage, review, proposal, and AI policies.
Documentation changes must also follow the documentation style guide.
For the main execution paths through EmDash, read Architecture (internals). Code-level patterns and invariants are documented in AGENTS.md.