Introduction to consumerfinance.gov¶
This is the documentation for the consumerfinance.gov project that powers the www.consumerfinance.gov website. It is organized thematically in order to create a central repository for all information pertaining to consumerfinance.gov.
Disclaimer¶
This project is a work in progress. Nothing presented in this repo—whether in the source code, issue tracker, or wiki—is a final product unless it is marked as such or appears on www.consumerfinance.gov. In-progress updates may appear on beta.consumerfinance.gov.
Technology stack¶
The standard technology stack for development of consumerfinance.gov within the CFPB consists of the following base:
- macOS
- Homebrew - package manager for installing system software on OSX
- Python 3.8 and pip (Python package manager)
- Jinja2 templates for front-end rendering. See
requirements/libraries.txt
for version. - Wagtail CMS for content administration. See
requirements/wagtail.txt
for version. - PostgreSQL 13.13 is the database we use in production and locally.
- Psycopg is the Python library that lets Python talk to Postgres. See
requirements/libraries.txt
for current version. - Additional dependencies, listed below.
Additional dependencies¶
- Elasticsearch: Used for full-text search capabilities and content indexing.
- Node and yarn: Used for downloading and managing front-end dependencies and assets. Front-end dependencies are listed in the project's package.json file.
- pyenv
- pyenv-virtualenv
Versions¶
Versions for most front-end packages are kept updated in the project's package.json file.
Versions for back-end software including Django, Wagtail, Jinja, etc. are kept in the project's requirements files: https://github.com/cfpb/consumerfinance.gov/tree/main/requirements
base.txt
: shortcut fordjango.txt
+wagtail.txt
+libraries.txt
ci.txt
: specific requirements for the continuous integration environment. Should/could be moved to CI configuration files?deployment.txt
: requirements for deployment, includesbase.txt
and a New Relic library that we don't install anywhere else.django.txt
: specifies the Django version. The file is used when running the site, but by having it separate we can test against other versions of Django by excluding this file.docs.txt
: requirements to build the consumerfinance.gov docs.libraries.txt
: Python libraries.local.txt
: includesbase.txt
and some useful libraries when developing locally.scripts.txt
: Requirements for running certain jobs on Jenkins, so scripts can run in Jenkins without having to install all the other requirements.test.txt
: requirements for running Python tests.wagtail.txt
: specifies Wagtail version. In its own file to make it easier to test multiple versions, same as withdjango.txt
.