# ---- Core ---- NODE_ENV=development DATABASE_URL=postgres://localhost:5432/fetcha REDIS_URL=redis://127.0.0.1:6379 AUTH_SECRET=change-me-32-bytes-minimum # Public URL of the web app (marketing + dashboard) and the API WEB_URL=http://localhost:8220 API_URL=http://127.0.0.1:8221 NEXT_PUBLIC_SITE_URL=http://localhost:8220 NEXT_PUBLIC_API_URL=http://localhost:8220 API_PORT=8221 WEB_PORT=8220 # Shared secret between the web app and the API (playground, internal calls) INTERNAL_SERVICE_TOKEN=change-me # ---- Email (Resend) ---- RESEND_API_KEY= EMAIL_FROM="Fetcha " EMAIL_FROM_TRANSACTIONAL="Fetcha " # ---- Billing (Stripe, optional in V1) ---- STRIPE_SECRET_KEY= STRIPE_WEBHOOK_SECRET= # ---- Upstream providers (never exposed to customers) ---- DECODO_USERNAME= DECODO_PASSWORD= OXYLABS_USERNAME= OXYLABS_PASSWORD= SOAX_USERNAME= SOAX_PASSWORD= # ---- Admin ---- ADMIN_EMAILS=you@example.com # --- v0.2: managed browser, HTTP engine, crawler --------------------------- # Managed Chromium (Playwright). Install the browser once: `pnpm --filter @fetcha/browser install-browser`. FETCHA_BROWSER_ENABLED=1 FETCHA_BROWSER_CONCURRENCY=6 # "chromium" = full Chromium build (Patchright); "chrome" uses an installed Google Chrome (prod). FETCHA_BROWSER_HEADLESS=0 = real off-screen window (needs a GUI session). FETCHA_BROWSER_CHANNEL=chromium FETCHA_BROWSER_HEADLESS=1 # Prefer HTTP/2 towards origins (set 0 to force HTTP/1.1). FETCHA_HTTP2=1 # Crawl jobs executed in parallel by this API process. FETCHA_CRAWL_PARALLEL_JOBS=4 # Captcha solver (2captcha.com) for Cloudflare Turnstile challenges in browser mode. Empty = disabled. TWOCAPTCHA_API_KEY=