-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
156 lines (134 loc) · 7.15 KB
/
Copy path.env.example
File metadata and controls
156 lines (134 loc) · 7.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# =============================================================================
# QVORA — Environment Variables
# Copy to .env.local (web), .env (services) and populate from Doppler
# =============================================================================
# -----------------------------------------------------------------------------
# Clerk — Auth (https://clerk.com)
# -----------------------------------------------------------------------------
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_
CLERK_SECRET_KEY=sk_test_
CLERK_WEBHOOK_SECRET=whsec_
# -----------------------------------------------------------------------------
# Supabase — PostgreSQL + RLS (https://supabase.com)
# -----------------------------------------------------------------------------
SUPABASE_URL=https://<project>.supabase.co
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
DATABASE_URL=postgresql://postgres:<password>@db.<project>.supabase.co:5432/postgres
# -----------------------------------------------------------------------------
# Upstash Redis — HTTP/REST cache + rate limiting (https://upstash.com)
# NEVER use for asynq job queues — HTTP proxy blocks BLPOP
# -----------------------------------------------------------------------------
UPSTASH_REDIS_REST_URL=https://<id>.upstash.io
UPSTASH_REDIS_REST_TOKEN=
# -----------------------------------------------------------------------------
# Railway Redis — TCP asynq job queues ONLY (https://railway.app)
# NEVER substitute with Upstash — asynq requires persistent TCP connection
# -----------------------------------------------------------------------------
RAILWAY_REDIS_URL=redis://default:<password>@<host>:<port>
# -----------------------------------------------------------------------------
# Cloudflare R2 — Object storage, zero egress (https://cloudflare.com)
# -----------------------------------------------------------------------------
R2_ACCOUNT_ID=
R2_ACCESS_KEY_ID=
R2_SECRET_ACCESS_KEY=
R2_BUCKET_NAME=qvora-assets
R2_PUBLIC_URL=https://assets.qvora.com
# -----------------------------------------------------------------------------
# Mux — HLS video streaming + analytics (https://mux.com)
# -----------------------------------------------------------------------------
MUX_TOKEN_ID=
MUX_TOKEN_SECRET=
MUX_WEBHOOK_SECRET=
NEXT_PUBLIC_MUX_ENV_KEY=
# -----------------------------------------------------------------------------
# FAL.AI — Async video generation queue (https://fal.ai)
# Always fal.queue.submit() — NEVER fal.subscribe() (blocks under load)
# -----------------------------------------------------------------------------
FAL_KEY=
# -----------------------------------------------------------------------------
# ElevenLabs — TTS voiceover (https://elevenlabs.io)
# eleven_v3 = quality | eleven_flash_v2_5 = ~75ms latency
# -----------------------------------------------------------------------------
ELEVENLABS_API_KEY=
# -----------------------------------------------------------------------------
# HeyGen — Avatar lip-sync API v3 (https://developers.heygen.com)
# V2V lip-sync is v3-only. "v4" does not exist. Default avatar provider.
# -----------------------------------------------------------------------------
HEYGEN_API_KEY=
# -----------------------------------------------------------------------------
# Tavus — Avatar lip-sync v2 (https://tavus.io)
# Secondary provider — activated on HeyGen 429 or cost-optimized paths.
# -----------------------------------------------------------------------------
TAVUS_API_KEY=
# -----------------------------------------------------------------------------
# OpenAI — GPT-4o creative brief generation (https://platform.openai.com)
# -----------------------------------------------------------------------------
OPENAI_API_KEY=
# -----------------------------------------------------------------------------
# Stripe — Subscriptions + Entitlements (https://stripe.com)
# -----------------------------------------------------------------------------
STRIPE_SECRET_KEY=sk_test_
STRIPE_WEBHOOK_SECRET=whsec_
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_
STRIPE_STARTER_PRICE_ID=price_
STRIPE_GROWTH_PRICE_ID=price_
STRIPE_AGENCY_PRICE_ID=price_
# -----------------------------------------------------------------------------
# Langfuse — LLM observability + cost attribution (https://langfuse.com)
# -----------------------------------------------------------------------------
LANGFUSE_SECRET_KEY=sk-lf-
LANGFUSE_PUBLIC_KEY=pk-lf-
LANGFUSE_BASEURL=https://cloud.langfuse.com
# -----------------------------------------------------------------------------
# Modal — Serverless Playwright scraping (https://modal.com)
# -----------------------------------------------------------------------------
MODAL_TOKEN_ID=
MODAL_TOKEN_SECRET=
MODAL_SCRAPER_ENDPOINT=https://<workspace>--qvora-scraper.modal.run
# -----------------------------------------------------------------------------
# Sentry — Error tracking (https://sentry.io)
# -----------------------------------------------------------------------------
SENTRY_DSN=
NEXT_PUBLIC_SENTRY_DSN=
SENTRY_ORG=
SENTRY_PROJECT=
# -----------------------------------------------------------------------------
# PostHog — Product analytics (https://posthog.com)
# -----------------------------------------------------------------------------
NEXT_PUBLIC_POSTHOG_KEY=phc_
NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com
# -----------------------------------------------------------------------------
# Better Stack — Logging (https://betterstack.com)
# -----------------------------------------------------------------------------
BETTERSTACK_SOURCE_TOKEN=
# -----------------------------------------------------------------------------
# Internal service URLs (override in production with Railway private URLs)
# -----------------------------------------------------------------------------
GO_API_URL=http://localhost:8080
RUST_POSTPROCESS_URL=http://localhost:3001
NEXT_PUBLIC_APP_URL=http://localhost:3000
API_BASE_URL=http://localhost:8080
# -----------------------------------------------------------------------------
# Internal API key — shared secret for worker → API callbacks
# Workers send this in X-Internal-Api-Key header on internal routes.
# Generate with: openssl rand -hex 32
# -----------------------------------------------------------------------------
INTERNAL_API_KEY=
# -----------------------------------------------------------------------------
# FAL.AI cost circuit breaker (USD hourly limits per tier)
# Defaults below match CostLimits in worker/task/semaphore.go
# Override here to adjust without code changes.
# -----------------------------------------------------------------------------
FAL_COST_LIMIT_STARTER=2.00
FAL_COST_LIMIT_GROWTH=8.00
FAL_COST_LIMIT_AGENCY=20.00
# -----------------------------------------------------------------------------
# Anthropic — Claude Sonnet 4.6 creative generation (https://anthropic.com)
# -----------------------------------------------------------------------------
ANTHROPIC_API_KEY=
# -----------------------------------------------------------------------------
# App config
# -----------------------------------------------------------------------------
NODE_ENV=development
NEXT_TELEMETRY_DISABLED=1