Pull requests are the primary mechanism through which code changes enter the Tasking Manager codebase. Whether you are fixing a one-line typo or delivering a multi-week feature, the same principles apply: keep changes focused, write tests, and communicate clearly with reviewers. This guide walks through the full lifecycle of a PR — from forking the repository to seeing your work merged and deployed.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/hotosm/tasking-manager/llms.txt
Use this file to discover all available pages before exploring further.
Submitting a Pull Request
Fork and branch from develop
Fork the tasking-manager repository on GitHub and clone your fork locally. Always branch from Follow the git-flow naming convention for your branch:
develop — it is the trunk branch and where all reviewed work lands.| Branch type | Pattern | When to use |
|---|---|---|
feature/ | feature/ISSUE-short-title | New functionality |
bugfix/ | bugfix/ISSUE-short-title | Non-critical fixes for the next release |
hotfix/ | hotfix/ISSUE-short-title | Emergency fixes that must ship immediately |
Write your code and commit
Keep commits focused and cohesive. Split large changes into smaller logical units and use meaningful commit messages:A good commit message has:
- A one-line summary starting with a capital letter (imperative mood preferred)
- A blank line followed by a detailed body for non-trivial changes
Format your code
Run the appropriate formatter before pushing. Unformatted code will fail CI checks.Backend (Python):Frontend (JavaScript / JSX):
Run the test suites
All tests must pass before you open a PR. Failing tests block the CI pipeline and will prevent your PR from being merged.Backend tests:Frontend tests:
Whenever you add a new API endpoint to the backend, add a corresponding test case for it. For frontend changes, consider adding tests for non-trivial logic paths.
Open the pull request on GitHub
Push your branch to your fork and open a PR against the
hotosm/tasking-manager develop branch. In the PR description:- Reference the GitHub issue — e.g.,
Closes #1234orRelates to #1234 - Describe what changed and why, not just what files were modified
- Provide testing instructions — list the exact steps a reviewer needs to reproduce and verify the change
- Highlight preconditions — e.g., specific account permissions, feature flags, or seed data required
- Note any new environment variables if your change adds or modifies configuration
Reviewing a Pull Request
All team members — and community contributors — are encouraged to review open PRs. A best practice is to pair a code-focused reviewer with someone who tests behaviour and UX end-to-end.Check Continuous Integration results
Before diving into the code, confirm that the automated CI pipeline has passed. If any checks have failed, leave a comment on the PR asking the author to investigate the error before the review continues.
Review the code
Examine the diff on the GitHub PR page. For larger PRs, check out the branch locally to run it:When reviewing, consider the following criteria:
- Code quality — Is the logic correct, readable, and well-structured?
- Comments — Are complex or non-obvious sections explained? Do existing comments remain accurate?
- Tests — Are there unit tests for new backend functionality? Do they cover edge cases?
- Typos and formatting — Consistent style helps long-term maintainability.
- Documentation — Are new environment variables documented? Are API changes noted?
Test on the staging instance
Once the CI is green and the code looks good, verify the behaviour on the Tasking Manager Staging site. Merges to
develop are automatically deployed there.Work through the change checklist that is relevant to the PR:- Frontend changes — Walk through the affected screens both logged in and logged out.
- API changes — Poll the live API docs at
/api-docsto confirm endpoint behaviour. - Messaging changes — Test with two separate accounts in two browsers (e.g., one in private/incognito mode).
- Task workflow changes — Check out a task for mapping, unlock it, mark it done, validate it, and invalidate it.
- Task commenting changes — Comment on a task in each state (unchecked-out, checked out for mapping, checked out for validation).
Versions and Releases
Major releases (~every 6 weeks)
Major releases (~every 6 weeks)
Major releases increment the second version digit (e.g.,
5.1.0 → 5.2.0) and follow a structured process:- After approximately four weeks, the team coordinates a feature freeze — some flexibility is allowed to finish in-flight work.
developis frozen for one week. No new feature branches may be merged during this window.- A Pull Request from
developtomasteris opened and reviewed, including release notes. - The
@hotosm/software-testersgroup is pinged to conduct extensive testing on tasks-stage.hotosm.org. - Two code reviews from core contributors are required for approval.
- After one week of positive feedback, the PR is merged into
master. developis rebased onmasterand a release tag is created frommaster.
Minor / hotfix releases (emergency)
Minor / hotfix releases (emergency)
Minor releases increment the third version digit (e.g.,
5.2.0 → 5.2.1) and are reserved for critical bug fixes only. Only hotfix/ branches may be applied.- A Pull Request is opened from the
hotfix/branch tomaster, including brief release notes. - Two code reviews from core contributors are required for approval.
- The PR is merged into both
masteranddevelop. developis rebased onmasterand a release tag is created frommaster.