Skip to content

Contributing

Branch Naming

<type>/<scope>-<short-description>

Examples:

  • feat/identity-invite-reservation
  • fix/messaging-typing-indicator-leak
  • chore/turbo-cache-optim

Commit Messages

Conventional Commits format, English only, header ≤ 70 chars:

feat(identity): add invite reservation RPC
fix(economy): prevent double-regen within 24h window
chore(docs): add wiki module reference page

Before Submitting a PR

bash
pnpm test        # all unit + integration tests
pnpm lint        # ESLint (including cross-context import rule)
pnpm type-check  # TypeScript strict mode

Architectural Rules (Non-Negotiable)

  1. No cross-context service imports. The ESLint rule no-cross-context-import enforces this. Integrate via EventBus (@OnEvent).
  2. Append-only financial tables. Never UPDATE emoji_payments, reputation_events, contribution_events, post_boosts. Reversals = new row.
  3. No new Postgres FKs across bounded contexts. UUID references only.
  4. New external dependencies require a draft ADR in docs/adr/.
  5. New public functions require unit tests in the same PR.

PR Title Format

[scope] description

Example: [identity] add invite code expiration sweep cron

Documentation Updates

Every PR that changes behaviour must update the relevant page in apps/docs/. For architectural decisions, create or update an ADR in docs/adr/.

Regulus — invite-only social-knowledge platform