-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
116 lines (96 loc) · 6.44 KB
/
Copy path.env.example
File metadata and controls
116 lines (96 loc) · 6.44 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
# PetroBrain marketing site — environment variables
# Copy to `.env.local` for local development. Never commit real secrets.
# Plausible analytics (privacy-respecting). Leave blank to disable the script.
# Set to your production domain, e.g. petrobrain.ai
NEXT_PUBLIC_PLAUSIBLE_DOMAIN=
# Optional self-hosted Plausible. Defaults to https://plausible.io when unset.
NEXT_PUBLIC_PLAUSIBLE_SRC=
# Optional client error-reporting collector. When set, the error boundaries POST a minimal,
# PII-free crash payload here (a Sentry tunnel, a Datadog/Logflare HTTP intake, or your own
# endpoint). Works alongside Sentry below. Leave blank to log-only. See lib/observability.ts.
NEXT_PUBLIC_ERROR_REPORT_URL=
# ── Sentry error monitoring (optional; DSN-gated, no-op when unset) ──────────────
# From your Sentry project → Settings → Client Keys (DSN). The SAME DSN value goes in both:
# SENTRY_DSN → server / edge runtime + onRequestError hook (server-only)
# NEXT_PUBLIC_SENTRY_DSN → browser SDK (also added to the CSP connect-src automatically)
# Without them, Sentry never initializes and reportError() just logs. Sample rate 0..1.
SENTRY_DSN=
NEXT_PUBLIC_SENTRY_DSN=
SENTRY_TRACES_SAMPLE_RATE=0.1
NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE=0.1
# CRM webhook for the demo / MRV-lead forms (server-only — do NOT prefix with NEXT_PUBLIC).
CRM_WEBHOOK_URL=
# ── Internal lead-notification email (Resend; server-only; optional) ────────────
# When RESEND_API_KEY + LEAD_NOTIFY_TO are set, /api/demo and /api/mrv-lead also email an
# internal notification (full lead) to your sales/demo inbox. Get a key at resend.com.
# LEAD_NOTIFY_FROM must be a verified sender on your domain; defaults to Resend's onboarding
# address for first-run testing. LEAD_NOTIFY_TO is comma-separated. Runs independently of CRM.
RESEND_API_KEY=
LEAD_NOTIFY_TO=
LEAD_NOTIFY_FROM=
# Cal.com booking page embedded on the /demo success state. Leave blank to show the
# placeholder slot, e.g. https://cal.com/petrobrain/demo
NEXT_PUBLIC_CALCOM_URL=
# LEGACY: the app now lives in-codebase at /app with auth at /login, so the nav no
# longer links to an external app URL. Kept only for `appUrl` in lib/site.ts (unused by
# the nav). Safe to leave blank.
NEXT_PUBLIC_APP_URL=
# Base URL of the PetroBrain backend (data API). SERVER-ONLY — do NOT prefix with
# NEXT_PUBLIC, so the host + token never reach the browser. /api/pb/*, /api/copilot/chat and
# the upload routes proxy here and attach the signed-in user's Neon Auth JWT as Bearer.
# Defaults to http://localhost:8000 for local dev; in prod point it at the deployed backend
# (e.g. https://petrobrain-api.onrender.com).
PETROBRAIN_API_URL=http://localhost:8000
# ── Distributed rate limiting (Upstash Redis; server-only; optional) ────────────
# When BOTH are set, lib/rateLimit.ts uses a shared sliding-window limiter across all
# serverless instances (survives cold starts; can't be bypassed by hitting another
# instance). When unset, it falls back to the per-instance in-memory limiter — fine for
# local dev. Create a free Redis DB at upstash.com → copy the REST URL + REST token
# (NOT the redis:// connection string).
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
# ── Logged-in app launch stage (client-side) ───────────────────────────────────
# "early-access" (default) shows only the /app modules wired to the live backend; "full"
# shows every nav module. Flip to "full" once the backend contract is complete (DEPLOY.md §2a).
NEXT_PUBLIC_APP_STAGE=early-access
# ── Neon Auth (Better Auth) — login / signup / sessions ─────────────────────────
# From the Neon console → Auth → Configuration tab. NEON_AUTH_BASE_URL is the "Auth URL";
# NEON_AUTH_COOKIE_SECRET is a secret YOU generate (>=32 chars: `openssl rand -base64 32`
# or `node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"`).
# Both are server-only. Required for /login, /signup, the /app gate, and the Neon JWT the
# BFF forwards to the backend (which verifies it via Neon's JWKS).
NEON_AUTH_BASE_URL=
NEON_AUTH_COOKIE_SECRET=
# ── Public-data layer (server-only; powers GET /api/public-data/*) ──────────────
# Each source degrades to an honest "data unavailable" state when its key/source is
# missing — the app NEVER fabricates a number.
# EIA API key (free): https://www.eia.gov/opendata/register.php
# Enables live Brent + WTI crude spot prices. Without it, oil-prices is "unavailable".
# (Bonny Light has no free public API — needs an Argus/Platts/OPEC-basket feed, TODO.)
EIA_API_KEY=
# World Bank flaring indicator code (World Bank Indicators API is KEYLESS). Set this to
# the confirmed VIIRS/GGFR flaring-volume series code to enable live flaring data; until
# then the flaring endpoint reports "unavailable". See lib/public-data/sources/flaring.ts.
WORLD_BANK_FLARING_INDICATOR=
# Not yet wired (no public JSON API — need a file/feed ingest, see the TODOs in
# lib/public-data/sources/*): Baker Hughes rig count, OPEC MOMR production, NUPRC figures.
# ── Maps & climate-risk hazard layers (client-side; optional) ───────────────────
# MapTiler frontend key → branded, theme-aware basemap (dataviz-light / dataviz-dark).
# Free at maptiler.com. Restrict by HTTP origin in production.
NEXT_PUBLIC_MAPTILER_KEY=
# Explicit MapLibre style URL — overrides BOTH themes and the MapTiler key. Blank =
# MapTiler key (if set) else free CARTO styles (positron light / dark-matter dark).
NEXT_PUBLIC_MAP_STYLE=
# Optional raster tile templates for the climate-risk hazard overlays (e.g.
# https://…/{z}/{x}/{y}.png). When unset, the map shows assets coloured by backend risk
# band and reports "layer source not connected" rather than faking an overlay. Provide a
# public/licensed hazard tile source (WRI Aqueduct, NASA SEDAC, Copernicus, etc.).
NEXT_PUBLIC_CLIMATE_TILE_URL_FLOOD=
NEXT_PUBLIC_CLIMATE_TILE_URL_HEAT=
NEXT_PUBLIC_CLIMATE_TILE_URL_COASTAL=
NEXT_PUBLIC_CLIMATE_TILE_URL_EROSION=
# Master switch for every interactive demo widget (hero demo, cross-domain demo,
# emissions reconciliation demo, value-chain demos, MRV readiness quiz).
# "true" → demos run as normal.
# unset / anything else → demos still render but are disabled (preview only). Default: disabled.
NEXT_PUBLIC_DEMOS_ENABLED=false