# Margin Configuration # Server PORT=8080 BASE_URL=https://example.com # Database (PostgreSQL connection string) DATABASE_URL=postgres://user:pass@localhost:5432/margin # Static Files (path to built frontend) STATIC_DIR=../web/dist # Encrypts OAuth secrets (signing key, refresh tokens, DPoP keys) at rest in the # database. Must be 32 bytes, base64-encoded. Generate with: # openssl rand -base64 32 # Leave blank to store these values unencrypted. TOKEN_ENCRYPTION_KEY= # Optional: Override default ATProto network URLs (you probably don't need these) # BSKY_PUBLIC_API=https://public.api.bsky.app # PLC_DIRECTORY_URL=https://plc.directory # BLOCK_RELAY_URL=wss://jetstream2.us-east.bsky.network/subscribe # Analytics (PostHog) — leave blank to disable # POSTHOG_PROJECT_TOKEN=phc_ # POSTHOG_HOST= # POSTHOG_UI_HOST=https://us.posthog.com # Stripe (Margin Pro subscriptions) — leave blank to disable billing # STRIPE_SECRET_KEY=sk_live_ # STRIPE_WEBHOOK_SECRET=whsec_ # STRIPE_PRICE_ID_MONTHLY=price_ # STRIPE_PRICE_ID_YEARLY=price_ # Cloudflare (Reading Room custom domains) — leave blank to disable # CF_API_TOKEN= # CF_ACCOUNT_ID= # CF_KV_NAMESPACE_ID= # CF_ROOT_DOMAIN=margin.at