General Rules
- Store hosted deployment secrets in GitHub Actions secrets or variables.
- Store local web runtime configuration in
apps/web/.env.local. - Do not commit tokens, keys, passwords, or rendered env dumps.
- Do not edit checked-in compose files to inject per-environment secrets.
Local And Self-Hosted Web
| Location | Purpose |
|---|---|
apps/web/.env.local | Docker build secret input and runtime env file for the web app |
| Shell environment | Optional overrides such as DOCS_PORT, SUPABASE_SERVER_URL, or UPSTASH_REDIS_REST_* when you intentionally override the Docker helpers |
tmp/docker-web/prod/ | Generated local deployment state for blue/green rollout |
GitHub Actions Secrets By Area
Vercel-hosted web apps
VERCEL_TOKENVERCEL_ORG_ID- App-specific
VERCEL_PROJECT_IDvalues such asVERCEL_PLATFORM_PROJECT_ID TURBO_TOKENTURBO_TEAM
Production and preview app configuration
PRODUCTION_SUPABASE_URLPRODUCTION_SUPABASE_PUBLISHABLE_KEYPRODUCTION_SUPABASE_SECRET_KEYENCRYPTION_MASTER_KEY
Supabase migrations
SUPABASE_ACCESS_TOKENSTAGING_DB_PASSWORDSTAGING_PROJECT_IDSTAGING_DB_URLPRODUCTION_DB_PASSWORDPRODUCTION_PROJECT_IDPRODUCTION_DB_URL
Modal deployment
MODAL_TOKEN_IDMODAL_TOKEN_SECRETMODAL_ENVIRONMENTas a GitHub Actions variable
Package publishing
NPM_TOKENfor npm publicationGITHUB_TOKENfor GitHub Packages- JSR publication uses workflow permissions with
id-token: write
Docker-Specific Notes
- The Docker web helper auto-generates a stable local Redis token and injects
UPSTASH_REDIS_REST_TOKEN,UPSTASH_REDIS_REST_URL, and the matching internalSRH_TOKENvalue for the bundledserverless-redis-httpcontainer. SRH_TOKENis the container’s internal environment variable. The user-facing override surface isUPSTASH_REDIS_REST_TOKENif you intentionally replace the helper-generated value.docker compose configexpands env values; treat its output as sensitive.
Change Management
When a new deployment flow is added:- Add its secret names here.
- Add the workflow or runtime page to the relevant devops doc.
- Keep the boundary clear between repo config, GitHub Actions config, and machine-local config.