Contributing
Development environment
Section titled “Development environment”The project uses a Dev Container — open the repository in VS Code or JetBrains and accept the “Reopen in Container” prompt. This sets up Deno, Node, PostgreSQL, Redpanda, and all dependencies automatically.
Code standards
Section titled “Code standards”- TypeScript everywhere — Deno for backend, Vite + React for frontend
- No comments in code — the codebase should be self-documenting. Exceptions: biome-ignore and eslint-disable directives
- Functional where possible — pure functions with explicit inputs/outputs over mutable module-level state
- Single source of truth — shared types in
backend/src/types/, shared utilities inbackend/src/lib/, shared frontend utilities infrontend/src/utils/ - Import map aliases — use
@veta/http,@veta/messaging,@veta/types/ordersetc. instead of relative paths like../lib/http.ts
Pre-commit hooks
Section titled “Pre-commit hooks”The pre-commit hook runs 8 checks automatically:
- Backend lint (
deno lint) - Backend type-check (
deno task check) - Backend unit tests (
deno task test) - Frontend lint (Biome)
- Frontend type-check (tsc)
- Frontend unit tests (Vitest)
- Smoke tests (if services are running)
- Integration tests (if services are running)
You cannot push until all checks pass.
Commit messages
Section titled “Commit messages”Follow Conventional Commits:
feat(risk): add pre-trade risk-engine with fat-finger checksfix(ci): wait for risk-engine prices before integration testsrefactor: consolidate shared types across 29 filesdocs(personas): document trading styles and desk segregationtest(replay): add unit tests for session replay panelPull requests
Section titled “Pull requests”- Release Please auto-generates version bumps and changelogs
- Dependabot auto-merges patch-level dependency updates
- CI must be green before merge (integration tests are
continue-on-errorfor known flaky strategies)