Environment Variables

AllyProof uses environment variables for all secrets, service connections, and configuration. Never commit secrets to source control. Use .env.local for local development.

Required Variables

These must be set for the application to start and function correctly:

VariableDescriptionExample
NEXT_PUBLIC_SUPABASE_URLSupabase project URL (public, safe for client)https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEYSupabase anonymous/public key (public, safe for client)eyJhbGciOi...
SUPABASE_SERVICE_ROLE_KEYSupabase service role key (server-only, bypasses RLS)eyJhbGciOi...
NEXT_PUBLIC_APP_URLFull application URL (used for links in emails and statements)https://app.allyproof.com

AI / LLM

VariableDescriptionExample
ANTHROPIC_API_KEYClaude API key for AI fix suggestions and VPAT summariessk-ant-...

If not set, AI features are disabled gracefully — scans still run but fix suggestions and VPAT executive summaries are not generated.

Email (Resend)

VariableDescriptionExample
RESEND_API_KEYResend API key for sending transactional emailsre_xxxxxxxxxx
RESEND_FROM_EMAILSender email address (must be verified in Resend)AllyProof <notifications@allyproof.com>

If not set, email notifications are disabled. Scans complete normally but no notification emails are sent.

Scheduled Scans

VariableDescriptionExample
CRON_SECRETShared secret for authenticating pg_cron webhook callsa1b2c3d4e5... (use openssl rand -hex 32)

This secret must match the value configured in Supabase's app.settings.cron_secret. See the Scheduled Scans guide for setup instructions.

Payments (Paddle)

VariableDescriptionExample
PADDLE_API_KEYPaddle API key for subscription managementpdl_...
PADDLE_WEBHOOK_SECRETSecret for verifying Paddle webhook signaturespdl_ntfset_...
NEXT_PUBLIC_PADDLE_CLIENT_TOKENPaddle client-side token for checkout (public, safe for client)test_...
NEXT_PUBLIC_PADDLE_ENVPaddle environment (sandbox or production)sandbox

Storage (Cloudflare R2)

VariableDescriptionExample
R2_ACCESS_KEY_IDCloudflare R2 access keyxxxxxxxx
R2_SECRET_ACCESS_KEYCloudflare R2 secret keyxxxxxxxx
R2_BUCKET_NAMER2 bucket for report storageallyproof-reports
R2_ENDPOINTR2 S3-compatible endpointhttps://xxxx.r2.cloudflarestorage.com

Monitoring

VariableDescriptionExample
SENTRY_DSNSentry error tracking DSNhttps://xxxxx@o0.ingest.sentry.io/0
NEXT_PUBLIC_SENTRY_DSNSentry DSN for client-side error trackingSame as SENTRY_DSN

Security Notes

  • Variables prefixed with NEXT_PUBLIC_ are exposed to the browser. Only use this prefix for values that are safe to be public (Supabase anon key, Paddle client token, app URL).
  • SUPABASE_SERVICE_ROLE_KEY bypasses Row Level Security. It must never be exposed to the client. Only use it in server-side code (API routes, server actions, Trigger.dev jobs).
  • In production, set environment variables through your hosting provider's dashboard or secrets manager. Do not use .env files in production.
  • The .env.local file is gitignored by default. The .env.example file in the repository shows all required variables with placeholder values.