Thanks for taking the time to consider contributing! We very much appreciate your time and effort. This document outlines the ways you can contribute to PlanDev UI and the conventions we follow.
- Prerequisites
- Communication Channels
- Our Development Process
- Submitting a Pull Request
- Coding Rules
- Pull Request Title and Labels
- Ways to Contribute
Our project's licensing terms are documented in LICENSE. Please review it before contributing — it impacts how your contributions may be redistributed.
We follow the Contributor Covenant. By participating, you agree to its terms.
For details on running, building, and testing PlanDev UI locally, see:
- README.md — quick start and project overview
- docs/DEVELOPER.md — local development setup
- docs/ENVIRONMENT.md — environment variables
- docs/TESTING.md — running unit and end-to-end tests
At a minimum you'll need:
- A GitHub account
- Git installed locally
- Node.js (see
.nvmrc) and npm - The ability to build and test the project on your local machine
Before contributing, it's a good idea to socialize your idea early. Our channels are:
- Issue tracker — report issues or propose changes
- Discussions — design conversations and show-and-tell
- Slack channel — real-time chat
flowchart TD
repo_proj[(NASA-AMMOS/plandev-ui)]-->|Fork|repo_fork[(Your Fork)]
repo_fork-->|Branch off develop|patch(Your Changes)
patch-->|Submit|pr(Pull Request)
pr==>|Approved + Squash & Merge|repo_proj
pr-->|Changes Requested|repo_fork
We integrate changes through pull requests against the develop branch. Forking is preferred over direct branching for external contributors; core team members typically branch directly.
Make sure people know what you're working on. Check the issue tracker for a related issue, or file a new one to start the conversation.
develop is the default branch and the integration target for all new work. Branch off develop.
-
Search GitHub for an open or closed PR that relates to your submission to avoid duplicating effort.
-
Confirm an issue describes the problem or feature. Discussing the design up front helps ensure the work will be accepted.
-
Clone the NASA-AMMOS/plandev-ui repo (or your fork).
-
Create a branch off
develop:git checkout develop git pull origin develop git checkout -b my-fix-branch develop
-
Make your changes.
-
Follow our Coding Rules.
-
Commit your changes:
git commit -a
The optional
-aflag will automaticallyaddandrmedited files. Intra-PR commits get squashed at merge time, so their shape is up to you — what matters is the PR title and label. -
Push your branch:
git push origin my-fix-branch
-
Open a pull request against
plandev-ui:develop.
If reviewers request changes:
-
Make the updates and follow the Coding Rules.
-
Rebase and force-push to update the PR:
git rebase develop -i git push -f
If your branch falls behind develop:
- Rebase locally as above, or
- Use the GitHub UI's "Update branch" dropdown → "Update with rebase".
Once approved, prefer Squash and merge to keep develop history clean. Update the squash commit message body to include only what's relevant. Do not modify the PR title at squash time — that breaks our release-notes tracking.
After merge:
git push origin --delete my-fix-branch # delete remote branch
git checkout develop # back to develop
git pull origin develop # pull the merged change
git branch -D my-fix-branch # delete local branchBefore opening a PR, run:
npm run format:writenpm run lintnpm run lint:cssnpm run check- Follow the testing procedures in docs/TESTING.md
PRs are squash-merged, so the PR title becomes the commit on develop. Use a descriptive sentence — recent examples:
- "Allow sequence name to be chosen during filter application"
- "Swap table cookie persistence for localStorage"
- "Fix inconsistent file extension handling in workspaces"
For release-note categorization, apply one of the labels configured in .github/release.yml:
| Label | Category |
|---|---|
breaking change |
Breaking Changes |
feature |
New Features |
fix |
Bug Fixes |
performance |
Performance Improvements |
refactor |
Refactoring |
test |
Testing |
ci |
Continuous Integration |
documentation |
Documentation |
build |
Build System and Dependencies |
style |
Style |
PRs without a matching label fall under "Other Changes".
Before writing code, check the issue tracker:
- Look for duplicate issues covering your idea — comment there with your thoughts.
- If none exist, file a new issue and start a conversation before opening a PR.
When ready to contribute code:
- Make sure development prerequisites are met.
- Follow our development process.
- Open a PR per Submitting a Pull Request.
Documentation lives in:
- Top-level: README.md, CODE_OF_CONDUCT.md, CONTRIBUTING.md
- docs/ — developer docs (deployment, environment, release, testing, developer setup)
- PlanDev documentation site — user-facing docs
Documentation contributions follow the same development process as code contributions.
Please do not file security vulnerabilities to the public issue tracker. Report them privately to plandev_support@jpl.nasa.gov.
When reporting, please include:
- Severity assessment
- Any known workarounds
- Return contact information for follow-up