# App APP_NAME=BeanFlows SECRET_KEY=change-me-generate-a-real-secret BASE_URL=http://localhost:5001 DEBUG=true ADMIN_EMAILS=admin@beanflows.coffee # Database DATABASE_PATH=data/app.db # DUCKDB_PATH points to the full pipeline DB (lakehouse.duckdb) — used by SQLMesh and export_serving. # SERVING_DUCKDB_PATH points to the serving-only export (analytics.duckdb) — used by the web app. # Run `uv run materia pipeline run export_serving` after each SQLMesh transform to populate it. DUCKDB_PATH=local.duckdb SERVING_DUCKDB_PATH=analytics.duckdb # Auth MAGIC_LINK_EXPIRY_MINUTES=15 SESSION_LIFETIME_DAYS=30 # Email (Resend) RESEND_API_KEY= EMAIL_FROM=hello@example.com # Paddle PADDLE_API_KEY= PADDLE_WEBHOOK_SECRET= PADDLE_PRICE_STARTER= PADDLE_PRICE_PRO= # Rate limiting RATE_LIMIT_REQUESTS=100 RATE_LIMIT_WINDOW=60 # Waitlist (set to true to enable waitlist gate on /auth/signup) WAITLIST_MODE=false RESEND_AUDIENCE_WAITLIST= # R2 Backup (optional — enables materia-backup.timer when all three are set) # Get from: Cloudflare Dashboard → R2 → Manage R2 API Tokens # R2_ENDPOINT format: https://.r2.cloudflarestorage.com R2_ACCESS_KEY_ID= R2_SECRET_ACCESS_KEY= R2_ENDPOINT=