All contributions to this project will be released under the CC0 public domain dedication. By submitting a pull request or filing a bug, issue, or feature request, you are agreeing to comply with this waiver of copyright interest. Details can be found in our TERMS and LICENCE.
There are two primary ways to help:
- Using the issue tracker, and…
- Changing the codebase.
Use the issue tracker to suggest feature requests, report bugs, and ask questions. This is also a great way to connect with the developers of the project as well as others who are interested in this solution.
Use the issue tracker to find ways to contribute. Find a bug or a feature, mention in the issue that you will take on that effort, then follow the Changing the codebase guidance below.
If you are a contributor from outside of CFPB, you should fork this repository, make changes in your own fork, and then submit a pull request.
If you are a contributor within CFPB, you may also fork, or follow our documentation for branching.
For timely code reviews of pull requests, please tag @cfpb/cfgov-backends and @cfpb/cfgov-frontends as appropriate for your changes.
All new code should have associated unit tests and/or functional tests that validate implemented features and the presence or lack of defects. The overall test coverage of the codebase should not decrease.
Python code is expected to follow PEP8 and not commit atrocities. JavaScript, CSS/Less, and markup should follow our front-end standards. When in doubt, mimic the styles and patterns in the existing codebase.
-
We serve JavaScript to any browser that supports fetch. We use esbuild to transpile and minify our JavaScript.
-
We prefix CSS for every browser in our browserslist. We use autoprefixer to add vendor-specific prefixes to rules where necessary.
Within the root directory, run npx browserslist
to output the set of browser
targets given to autoprefixer
(CSS) transpiling.
!!! note
A browserslist string is used in package.json
.
See the
browserslist docs
for information on this string and the defaults.
For JavaScript, esbuild
uses the es6
target and
our code conditionally includes JavaScript in browsers that
support fetch.
!!! note JavaScript may still be delivered to legacy browsers in the form of our analytics and related scripts.
We run automated browser tests in headless Chrome with yarn cypress run
.
See our cross browser testing docs for other testing methods.
Satellite apps may run within consumerfinance.gov, but manage their own assets within the unprocessed/apps directory. These apps can have their own dependencies within their package.json file.