Harmony Chat
Developers

Contributing

Checks, tests, and the BDD workflow.

Work happens in the TypeScript monorepo, inside Devbox.

devbox shell

bun run checks      # format + eslint + tsc -b + quality gates
bun run tests       # Vitest unit + BDD + regenerate FEATURES.md
bun run test:fast   # fast project — the everyday loop
bun run test:heavy  # PGlite, tmux, Storybook, full server

checks locally is the same command CI runs, from the same locked Devbox environment.

Test kinds

KindUse for
BDDA capability a human would name
UnitA public function — not regex, not source greps

BDD features are Gherkin in tests/features/**, with step definitions in tests/bdd/<purpose>/<name>.feature.spec.ts. FEATURES.md is generated from them — never hand edited.

Conventions

  • TypeScript with project references; per-app typecheck via each app's typecheck script.
  • ESLint 9 flat config, dprint for formatting (including Markdown).
  • Documentation and code move together. If a doc and the code disagree, fix both in the same change.

This site

apps/site is a Next.js App Router app holding the landing page and the published docs. Its content lives in apps/site/content/docs. See the app README for the audience split and the link rule.