Skip to content

Environment Registry

import { Aside } from ‘@astrojs/starlight/components’;

App Configuration

VariableRequiredDescription
NEXT_PUBLIC_APP_URLCanonical URL — https://brettjohnson.xyz
NEXT_PUBLIC_APP_ENVproduction | staging | development

Supabase

VariableRequiredDescription
NEXT_PUBLIC_SUPABASE_URLSupabase project URL (public)
NEXT_PUBLIC_SUPABASE_ANON_KEYSupabase anon key (public, RLS enforced)
SUPABASE_SERVICE_ROLE_KEYService role key — server-side only
DATABASE_URLmigrations onlyDirect PostgreSQL connection string

Email (Resend)

VariableRequiredDescription
RESEND_API_KEYResend API key
EMAIL_FROMSender address — hello@brettjohnson.xyz
EMAIL_INTERNAL_NOTIFYInternal notification recipient

HubSpot CRM

VariableRequiredDescription
HUBSPOT_PRIVATE_APP_TOKENHubSpot private app access token
HUBSPOT_PIPELINE_IDBooking pipeline ID
HUBSPOT_STAGE_NEWDeal stage ID for “New Inquiry”

Cloudflare Turnstile

VariableRequiredDescription
NEXT_PUBLIC_TURNSTILE_SITE_KEYSite key (public)
TURNSTILE_SECRET_KEYSecret key — server-side only

Cloudflare R2

VariableRequiredDescription
CF_R2_ACCOUNT_IDCloudflare account ID
CF_R2_ACCESS_KEY_IDR2 access key ID
CF_R2_SECRET_ACCESS_KEYR2 secret — server-side only
CF_R2_BUCKET_NAMEBucket name — brettjohnson-media
NEXT_PUBLIC_MEDIA_BASE_URLCDN URL — https://media.brettjohnson.xyz

Upstash Redis

VariableRequiredDescription
UPSTASH_REDIS_REST_URLRedis REST API URL
UPSTASH_REDIS_REST_TOKENRedis REST token — server-side only

Calendly

VariableRequiredDescription
NEXT_PUBLIC_CALENDLY_URLCalendly event type embed URL

Analytics & Monitoring

VariableRequiredDescription
NEXT_PUBLIC_PLAUSIBLE_DOMAINPlausible domain — brettjohnson.xyz
NEXT_PUBLIC_SENTRY_DSNSentry DSN
SENTRY_AUTH_TOKENCI onlySource map upload token
SENTRY_ORGCI onlySentry organization slug
SENTRY_PROJECTCI onlySentry project slug

Feature Flags

VariableDefaultDescription
NEXT_PUBLIC_FEATURE_PODCASTfalseEnable podcast section
NEXT_PUBLIC_FEATURE_MEDIA_KITfalseEnable media kit download
NEXT_PUBLIC_FEATURE_CALENDLYfalseEnable Calendly embed
NEXT_PUBLIC_FEATURE_HUBSPOT_SYNCfalseEnable HubSpot CRM sync
NEXT_PUBLIC_FEATURE_PLAUSIBLEfalseEnable Plausible analytics
NEXT_PUBLIC_FEATURE_SENTRYfalseEnable Sentry error tracking

CI/CD (GitHub Actions Secrets)

Set in GitHub → Settings → Secrets and variables → Actions.

SecretDescription
VERCEL_TOKENVercel API token
VERCEL_ORG_IDVercel team ID
VERCEL_PROJECT_ID_WWWProject ID for apps/www
VERCEL_PROJECT_ID_APIProject ID for apps/api
VERCEL_PROJECT_ID_DOCSProject ID for apps/docs
SENTRY_AUTH_TOKENSentry source map token
SNYK_TOKENSnyk dependency scanning

Environment Matrix

CategoryDevelopmentStagingProduction
App URLhttp://localhost:3000https://staging.brettjohnson.xyzhttps://brettjohnson.xyz
SupabaseDev projectStaging projectProd project
ResendTest modeLive (test recipient)Live
TurnstileTest keys (always pass)Live keysLive keys
Feature flagsAll trueAll trueStaged rollout

Secret Rotation Policy

TriggerAction
Engineer offboardingRotate all secrets immediately
Accidental commitRotate within 15 min + audit access logs
Vendor security incidentRotate affected vendor credentials
ScheduledAll secrets reviewed quarterly