.env.example
# Cloudflare, for every stage: Alchemy deploys and runs dev against real # D1 and R2. CLOUDFLARE_API_TOKEN= CLOUDFLARE_ACCOUNT_ID= # Better Auth # Only the production stage (plan/deploy) needs this; dev stages mint their own. BETTER_AUTH_SECRET= GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= # Non-production staging login key; generate with: openssl rand -hex 32 # Uncomment after generating; an empty value fails secret validation. # TEST_LOGIN_KEY= # Polar organization access token. Production uses the live organization # (POLAR_ACCESS_TOKEN); every other stage uses the sandbox organization # (POLAR_SANDBOX_ACCESS_TOKEN). Scopes: products, webhooks, checkouts, # customers and customer sessions, read and write. POLAR_SANDBOX_ACCESS_TOKEN= POLAR_ACCESS_TOKEN= # Paid plans default to open on every stage but production, which waits for # PAID_PLANS_OPEN=true (docs/PRODUCT.md). Set false to see a stage closed. # A closed stage never reads its Polar token. # PAID_PLANS_OPEN=false # Staging and preview stages email only these addresses (comma-separated) and # log the rest. Production emails anyone; local dev writes .eml files instead. # EMAIL_ALLOWLIST=you@example.com # Axiom, for traces. Production and staging deploys need both: # AXIOM_TOKEN is a personal access token and AXIOM_ORG_ID is the org id from # Axiom settings. Alchemy creates the traces dataset and an ingest-only token per # stage. PR previews export into staging's dataset and dev stages ship # nothing, so neither needs these. # AXIOM_TOKEN= # AXIOM_ORG_ID= # Web origin the API worker trusts; cookies and OAuth callbacks live there APP_URL=https://tranzfer.localhost