Requires Node.js 22+ and pnpm 10. Run commands from the Meith repository root unless stated otherwise.
git clone https://github.com/meith-dev/meith.git
cd meith
pnpm install
pnpm devOpen http://localhost:3000. Fixtures require no database and do not save changes.
docker compose -f docker/compose.dev.yml up -d
cp .env.example .envSet these values in .env, including a random AUTH_SECRET of at least 32 characters:
DATA_SOURCE=postgres
DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:55432/community_test
AUTH_SECRET=replace-with-a-random-secret-at-least-32-charactersRun pnpm meith migrate, then pnpm dev. Open /install, unlock with AUTH_SECRET and create the board administrator. Use Scheduled tasks for background work.
Stop this database before running the self-contained browser suite if it uses the same port. docker compose -f docker/compose.dev.yml down -v deletes its data.
pnpm site:devOpen http://localhost:3100. The site's forum links point to the configured live forum. Docs are loaded directly from docs/; see Documentation.
| Path | Purpose |
|---|---|
apps/community |
Board application (@meith/web) |
apps/web |
meith.dev (@meith/site) |
apps/cli, apps/worker |
Operator commands and background worker |
packages |
Domain, runtime, infrastructure and extension contracts |
boards/stock |
Official image's board configuration |
themes, plugins, examples |
Extensions and example source |
docker |
Deployment files |
See Architecture and Board workspaces.
Run focused tests while editing, then pnpm verify and pnpm comments:check. Use Testing for browser and PostgreSQL tests. Format only touched files with pnpm exec biome check --write <files>. When updating Biome, update the schema URL in biome.json to match the CLI version, including for generators that load this configuration. Markdown and YAML formatting remain disabled. Generators disable VCS integration when formatting temporary files outside the repository; they still use the shared formatter, import sorting and lint rules.
The tracing SDK remains on OpenTelemetry 2.x. Keep the API below 1.10 and the OTLP HTTP exporter on 0.222.x until migrating the SDK and resources together to 3.x; exporter 0.300.x requires the newer API through its transformer dependency.
No explanatory inline comments are allowed. Put explanations in docs/. Exceptions are biome-ignore, @ts-expect-error, compiler-read type annotations, and the six source files used for generated theme/plugin references. See Repository checks.
Use Conventional Commits (type(scope): summary). Update docs with behaviour changes. Feature changes do not change versions.