# Local listen address (ignored when PORT is set, e.g. on App Platform) LISTEN=:8080 # Required: PlanetScale Postgres URI (port 5432 so the app can create tables on boot). # Switch to 6432 (PgBouncer) later if you need pooling. DATABASE_URL=postgresql://user:password@host.example.com:5432/postgres?sslmode=verify-full # Required for integration tests (do not point at the runtime DATABASE_URL). # TEST_DATABASE_URL=postgresql://user:password@host.example.com:5432/plumber_test?sslmode=verify-full # One-time first-admin bootstrap: registrant must also POST setup_secret matching this value, # and only while no admin exists yet. Leave unset after bootstrap. Prefer a long random string. # ADMIN_SETUP_SECRET= # When PORT is set (App Platform), cookies are Secure by default; SECURE_COOKIE=0 is rejected. # Locally, set to 1 when serving over HTTPS: SECURE_COOKIE=0 # Comma-separated CIDRs of reverse proxies allowed to set X-Forwarded-For # (direct peer must match). Leave unset to ignore XFF and use RemoteAddr. # TRUSTED_PROXY_CIDRS=10.0.0.0/8,192.168.0.0/16 # Resend (answer notifications). Leave RESEND_API_KEY unset to disable. # RESEND_API_KEY=re_xxxxxxxxx # RESEND_FROM=Ask a Plumber # Public site origin used in email links (required when Resend is enabled): # APP_BASE_URL=https://askaplumber.example # DigitalOcean Spaces (profile avatars). Leave unset to disable uploads. # SPACES_KEY= # SPACES_SECRET= # SPACES_REGION=nyc3 # SPACES_BUCKET=your-bucket # SPACES_ENDPOINT=https://nyc3.digitaloceanspaces.com # SPACES_CDN_BASE=https://your-bucket.nyc3.cdn.digitaloceanspaces.com