Contribute

The project is better with you in it.

beatrax is built in the open under an ethical-use licence. You can read every line, run it yourself, and change it. This page is what to actually do — the rules below are read straight out of the specification, so they are the same rules a reviewer will apply.

Four ways in, in order of effort.

Not every useful contribution is code. The first one on this list is the one the product needs most and needs no local setup at all.

  1. 01

    Add to the community corpus

    Plain YAML mapping the cryptic descriptors your bank prints onto names people recognise. No code, no toolchain, no local install — one file per country, edited in the browser.

    How the corpus works →
  2. 02

    Report what broke

    A statement that imported wrong, a total that looks off, a screen that misbehaves on your phone. Bring the shape of the problem; never attach a real statement.

    Open an issue →
  3. 03

    Change the specification

    Behaviour is specified before it is written. If you want beatrax to do something differently, the specification change lands first and the code cites it.

    Read the change lifecycle →
  4. 04

    Write the code

    Pick up open work or bring your own. Large changes are worth agreeing on first — shape is cheaper to settle before the pull request than after.

    Read the contributing guide →

Open work, right now.

Everything across the organisation currently labelled for newcomers. This list is the live issue search, not a hand-kept copy of it.

Nothing is labelled for newcomers at the moment. Browse all open issues

The gates.

Every pull request passes all of these before review starts. Run them locally first — they are the same commands CI runs.

Formatting

the standard preset.

Static analysis

maximum level, strict mode.

Tests

the full suite including architecture tests. Run them locally first. Local hooks run the cheap ones automatically.

The conventions that are enforced.

These are not review preferences. They are checked by tests, so a change that breaks one fails the build rather than collecting a comment.

  • Dependency injection onlyNo global accessors in module code (ADR-0002).
  • The module boundaryImport another module's public surface or its models, never its interior.
  • No floating-point moneyAnywhere on the money path.
  • The comment policyMechanical rules are tested.
  • Sanctioned writersOne write path per shared column.
  • Cross-user testsEvery user-scoped surface gets one.

Everything else worth reading.

The specification is the authority on how beatrax behaves — ahead of this website and ahead of any README.