Skip to main content
Thanks for helping improve Routr. This page explains how to pick something to work on, set up your environment, and get your change merged. New contributors are in the best position to spot rough edges. If setup fails, the docs have a gap, or a script doesn’t work, open a bug report and tell us.

Ways to contribute

Not every contribution is code. We welcome:
  • Bug fixes and new features
  • Documentation
  • Builds and CI/CD
  • Issue triage
  • Answering questions on Discord and GitHub Discussions
  • Web design and UI/UX
  • Blog posts, talks, and social media
  • Release management
To work on something that doesn’t fit a pull request, come to office hours or reach out on Discord.

Find an issue

  • good first issue issues include extra context for your first contribution.
  • help wanted issues suit anyone who isn’t a core maintainer.
If neither label has open issues, ask on Discord or GitHub Discussions and we’ll help you find something. When you pick an issue, comment on it (for example, “I want to work on this”) so others know. For large or controversial changes, open a discussion before you write code.

Set up your environment

Run Routr from source

Build and run every service on your machine.

Develop with Gitpod

A ready-made workspace in your browser.

Write your commits

Use Conventional Commits

Commit messages must follow Conventional Commits (for example fix(dispatcher): ... or docs: ...). A commit-msg hook runs commitlint with @commitlint/config-conventional and rejects other formats. Release notes are generated from these messages. The pre-commit hook runs npm test, npm run format, npm run lint, npm run typecheck, and npm run generate:readme, so expect commits to take a moment.

Sign off your commits

We require a Developer Certificate of Origin (DCO) sign-off on every commit. It certifies that you wrote the code or have the right to contribute it. The sign-off must match the Git user and email of the commit:
Add it automatically with -s:
If you forgot and haven’t pushed yet, amend the commit:

Pull request lifecycle

  1. Check that nobody else is working on the same issue. If a related pull request exists, offer to help there. If it gets no response in a reasonable time, open your own.
  2. Open the pull request against main. CI runs unit tests, the type check, lint, and the Java tests.
  3. A maintainer reviews it and may ask you to improve the code, add tests or docs, change the approach, or split the change into smaller pull requests.
  4. Depending on the roadmap, a maintainer may delay the merge to fit a release, or ask you to close it and open a revised one.

Pull request checklist

Before you submit, confirm that:
  • Your code builds and the tests pass locally (npm test, npm run test:java)
  • npm run typecheck and lint pass
  • Your commits follow Conventional Commits and are signed off
  • You added tests for your change, where applicable
  • You updated the documentation, where applicable

Ask for help

Ask on the original GitHub issue, in the Discord community, or in GitHub Discussions.