|
| 1 | +# ── Environment ──────────────────────────────────────────────────────────── |
| 2 | +ENVIRONMENT=development |
| 3 | +# IMPORTANT: Change this to a long random string in production! |
| 4 | +SECRET_KEY=change-me-in-production |
| 5 | + |
| 6 | +# ── Database ──────────────────────────────────────────────────────────────── |
| 7 | +DATABASE_URL=postgresql+asyncpg://tokenbudget:localdev@localhost:5432/tokenbudget |
| 8 | +DB_POOL_SIZE=20 |
| 9 | +DB_MAX_OVERFLOW=10 |
| 10 | +DB_POOL_RECYCLE=3600 |
| 11 | + |
| 12 | +# ── Redis ─────────────────────────────────────────────────────────────────── |
| 13 | +REDIS_URL=redis://localhost:6379 |
| 14 | + |
| 15 | +# ── Signup kill switch ────────────────────────────────────────────────────── |
| 16 | +# Set to false to disable new account/key creation (e.g., maintenance mode) |
| 17 | +SIGNUPS_ENABLED=true |
| 18 | +SIGNUPS_PAUSED_MESSAGE=New signups are temporarily paused. Check back soon. |
| 19 | + |
| 20 | +# ── Free tier limits ──────────────────────────────────────────────────────── |
| 21 | +FREE_EVENTS_PER_MONTH=10000 |
| 22 | +FREE_KEYS_MAX=3 |
| 23 | +FREE_RETENTION_DAYS=30 |
| 24 | +FREE_PROJECTS_MAX=3 |
| 25 | + |
| 26 | +# ── Pro tier limits ───────────────────────────────────────────────────────── |
| 27 | +PRO_EVENTS_PER_MONTH=500000 |
| 28 | +PRO_KEYS_MAX=20 |
| 29 | +PRO_RETENTION_DAYS=365 |
| 30 | +PRO_PROJECTS_MAX=50 |
| 31 | + |
| 32 | +# ── Team tier limits ───────────────────────────────────────────────────────── |
| 33 | +TEAM_EVENTS_PER_MONTH=5000000 |
| 34 | +TEAM_KEYS_MAX=100 |
| 35 | +TEAM_RETENTION_DAYS=730 |
| 36 | +TEAM_PROJECTS_MAX=500 |
| 37 | + |
| 38 | +# ── Rate limiting ──────────────────────────────────────────────────────────── |
| 39 | +RATE_LIMIT_EVENTS_PER_SECOND=100 |
| 40 | +RATE_LIMIT_BURST=200 |
| 41 | + |
| 42 | +# ── CORS ───────────────────────────────────────────────────────────────────── |
| 43 | +# JSON array syntax required for pydantic-settings list parsing |
| 44 | +CORS_ORIGINS=["http://localhost:5173","http://localhost:3000"] |
| 45 | + |
| 46 | +# ── Admin ───────────────────────────────────────────────────────────────────── |
| 47 | +# Required for /api/admin/* endpoints. Leave empty to disable. |
| 48 | +ADMIN_KEY=change-this-admin-key |
| 49 | + |
| 50 | +# ── Nightly purge job ───────────────────────────────────────────────────────── |
| 51 | +PURGE_ENABLED=true |
| 52 | +PURGE_BATCH_SIZE=5000 |
| 53 | +# Hour and minute (UTC) for the nightly purge cron |
| 54 | +PURGE_CRON_HOUR=3 |
| 55 | +PURGE_CRON_MINUTE=0 |
| 56 | + |
| 57 | +# ── Clerk Auth (get keys from https://clerk.com) ────────────────────────────── |
| 58 | +# When CLERK_SECRET_KEY is set, the dashboard accepts Clerk session JWTs |
| 59 | +# in addition to the existing tb_ak_ API key flow (which always works). |
| 60 | +# Leave both empty to rely solely on API key auth (the current default). |
| 61 | +CLERK_SECRET_KEY=sk_test_REPLACE_ME |
| 62 | +VITE_CLERK_PUBLISHABLE_KEY=pk_test_REPLACE_ME |
| 63 | + |
| 64 | +# ── Stripe ─────────────────────────────────────────────────────────────────── |
| 65 | +STRIPE_SECRET_KEY= |
| 66 | + |
| 67 | +# ── Frontend ────────────────────────────────────────────────────────────────── |
| 68 | +VITE_API_URL=http://localhost:8000 |
0 commit comments