This project uses environment variables to configure certain aspects of the application.
- Used to authenticate with the GitHub API when making requests.
- For local development, you should set this variable to a valid personal access token that has the necessary permissions to access the relevant repositories. Generate a new personal access token and replace the value for
GITHUB_TOKENin your.envfile in order to connect to certain parts of the GitHub API. - In deployed environments, this should be set to a valid access token associated with the GitHub organization. Edit
kube/boost/values.yaml(or the environment-specific yaml file) to change this value.
- The GraphQL node ID of the GitHub org whose contributions the profile activity card counts.
- Optional. Defaults to the
boostorgorg (O_kgDOADBg4Q), so neither local nor deployed environments need to set it. - Set it only to scope the card at a different org, such as a fork or a test org. To find the value for another org, query GitHub's GraphQL API for that org's
idand use thenext_global_idfrom the deprecation warning — both the RESTnode_idfield and GraphQL'sorganization.idstill return the older, deprecated ID format.
- Used to indicate the name of the environment where the application is running.
- For local development, set this to whatever you want.
- In deployed environments, change the value by editing
kube/boost/values.yaml(or the environment-specific yaml file).
- Used to authenticate with the Amazon Web Services (AWS) API when accessing static content from a specified bucket.
- For local development, obtain valid value from the Boost team.
- In deployed environments, the valid value is set as a kube secret and is defined in
kube/boost/values.yaml(or the environment-specific yaml file).
- Used to authenticate with the Amazon Web Services (AWS) API when accessing static content from a specified bucket.
- For local development, obtain valid value from the Boost team.
- In deployed environments, the valid value is set as a kube secret and is defined in
kube/boost/values.yaml(or the environment-specific yaml file).
- Specifies the name of the Amazon S3 bucket where static content is stored
- For local development, obtain valid value from the Boost team.
- In deployed environments, the valid value is set in
kube/boost/values.yaml(or the environment-specific yaml file).
- Base API endpoint for accessing the JFrog Artifactory release downloads. This is NOT the base URL for the downloads themselves.
- For local development, there is a default value in
config/settings.py - In deployed environments, the valid value is set in
kube/boost/values.yaml(or the environment-specific yaml file).
- Base API endpoint for accessing the archives.boost.io release downloads.
- For development and production, there is a default value in
config/settings.py - Alternatively, the value can be set in
kube/boost/values.yaml.
- The lowest version of Boost with its downloads stored in JFrog Artifactory
- Hard-coded in
config/settings.pyin all environments
- Address for the Boost Google Calendar
- Hard-coded in
settings.pyin all environments
- API key for the Boost Google calendar
- For local development, obtain valid value from the Boost team.
- In deployed environments, the valid value is set in
kube/boost/values.yaml(or the environment-specific yaml file).
- The cache key and timeout length for the Google Calendar events
- Hard-coded in
settings.pyin all environments
- If set, will set SITE_ID to 1 in
settings.py.
- If set, will set the maximum number of connections to the Celery in
settings.py. Defaults to 60.
- Used to authenticate with the Slack API for pulling data for release reports.
- API key for OpenRouter, used by the
openaiSDK to reach the LLM that powers two features:- News/blogpost/link entry summaries (
news/tasks.py) - The Boost release-notes "What's New" draft summary (
versions/tasks.py)
- News/blogpost/link entry summaries (
- Default model is
gpt-oss-120b. To use a different model (e.g. a Claude model via OpenRouter), changeWHATS_NEW_MODELinversions/tasks.pyand the per-handler model strings innews/tasks.py. - For local development, set this in your
.envfile. Note: docker compose only loadsenv_fileat container creation, so after adding the variable rundocker compose up -d --force-recreate web celery-worker celery-beatto pick it up. - In deployed environments, set as a kube secret in
kube/boost/values.yaml(or the environment-specific yaml file). - Without this variable set, OpenRouter responds with
401 No cookie auth credentials foundand Celery retries the task up to 3 times before giving up.
- API key for the Plausible Analytics API, used to sync per-post page view counts into
Entry.page_views. - For local development, obtain a valid value from the Boost team.
- In deployed environments, the valid value is set in the environment-specific secrets.
- If not set (or set to
changeme), the sync task is silently skipped.
- Controls the decay rate of the posts ranking algorithm (
score = views / (age_hours + 2) ^ gravity). - Higher values cause recent posts to decay faster and drop in ranking sooner.
- Defaults to
2.0if not set.
See Email Routing and the QA Inbox for how messages are routed in each environment.
- Routes every outbound message to the
maildevSMTP sink instead of a real email service provider, so testing against real user accounts does not email real people. - For local development, not needed:
LOCAL_DEVELOPMENTalready sends to themaildevcontainer. - In deployed environments, set to
trueinkube/boost/values-stage-gke.yamlandkube/boost/values-cppal-dev-gke.yaml. Defaults tofalse, and Django refuses to start if it is enabled while the environment looks like production (X_DEPLOYMENT_ENVisproduction, orENVIRONMENT_NAMEisProduction Environment). - Only enable it where
maildevInstall: trueis also set, otherwise sends fail with a connection error.
EMAIL_HOST/EMAIL_PORTare where SMTP is delivered; they default tomaildevand1025.EMAIL_TIMEOUTis the per-send socket timeout in seconds, defaulting to10. Without itsmtplibblocks indefinitely, so a sink that accepts the connection but never answers would stall the request thread or Celery worker sending the message rather than raising. Only read on the SMTP path, so the Mailgun backend is unaffected.EMAIL_BACKENDis only read when local development orCATCH_ALL_EMAILis active, and defaults to Django's SMTP backend. Everywhere else the Mailgun Anymail backend is used unconditionally.- Set
EMAIL_HOST_USER,EMAIL_HOST_PASSWORDandEMAIL_USE_TLSif you point these at a real SMTP provider instead.