See development/docs for more information.
-
Install Docker
-
Install and configure git-secrets.
-
Install pre-commit and configure hooks.
pre-commit install
This should be enough to use the Docker Compose development environment. However, installing dependencies may be required if not using Docker Compose or for some editor integrations.
-
For browser/API development, install Node.js, pnpm, and dependencies.
pnpm install -
For data pipeline development, install Python, dependencies, and development tools.
pip install -r data-pipeline/requirements.txt pip install -r requirements-dev.txt pip install -r deploy/deployctl/requirements.txt
The production API can be used for browser development. To start a local instance of only the browser...
-
with Docker
# create browser/build.env file cat <<EOF > browser/build.env GA_TRACKING_ID= REPORT_VARIANT_URL= REPORT_VARIANT_VARIANT_ID_PARAMETER= REPORT_VARIANT_DATASET_PARAMETER= EOF ./development/env.sh browser up -
without Docker:
cd browser ./start.sh
Because of the size of the gnomAD database, API development is usually done using an Elasticsearch cluster hosted in the cloud. See the deployment documentation for instructions on deploying a browser environment in GCP and the data pipeline documentation for instructions on populating the database.
-
Install and configure the Google Cloud SDK.
-
Select GCP project and zone for development deployment.
./deployctl config set project $PROJECT ./deployctl config set zone $ZONE -
Start a local instance of the API...
-
with Docker:
./development/env.sh api upor use
./development/env.sh upto start both the API and browser -
without Docker:
cd graphql-api ELASTICSEARCH_USERNAME=elastic ELASTICSEARCH_PASSWORD=$(../deployctl elasticsearch get-password) ./start.sh
-
The Docker Compose configuration could be modified to run Elasticsearch locally.
All code should formatted using either Prettier for JavaScript or Black for Python. To run these formatters, use:
- Prettier:
pnpm format - Black:
black .
If pre-commit hooks are installed, formatters will be automatically run on each commit.
Some other conventions are enforced using ESLint for JavaScript, Stylelint for CSS (and styled-components styles), and Pylint for Python. To run these linters use:
- ESLint:
pnpm lint:js - Stylelint:
pnpm lint:css - Pylint:
pylint data-pipeline/src/data_pipeline
Jest is used for JavaScript unit tests. Jest is configured to look for files named *.spec.js in the browser and graphql-api directories.
To run all Jest tests, use:
pnpm jest
To run only tests for one component, use pnpm jest --projects browser or pnpm jest --projects graphql-api.
Images for the Docker Compose development environment need to be rebuilt after updating dependencies.
./development/env.sh build browser
./development/env.sh build api