Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
69 lines (62 loc) · 4.77 KB
/
Copy path.env.example
File metadata and controls
69 lines (62 loc) · 4.77 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
# BettaPay Frontend — Environment Variables
# Copy to .env.local for local development:
# cp .env.example .env.local
# Next.js loads .env files in order: .env.development → .env.production → .env.local
# (.env.local is never committed). For Vercel, set these in Dashboard → Settings → Environment Variables.
# ── Core ──────────────────────────────────────────────────────────────────────
# Backend API base URL. When unset the app falls back to mock mode (no HttpOnly cookies, mock data).
NEXT_PUBLIC_API_URL=http://localhost:3001
# Canonical site URL used for metadataBase (OpenGraph / canonical URLs)
NEXT_PUBLIC_SITE_URL=https://betta.pay
# Default UI language (issue #494). Optional — one of: en, fr, pt, sw.
# Unset or invalid → falls back to "en" (LanguageSelector always works).
# NEXT_PUBLIC_DEFAULT_LOCALE=en
# Optional build identifier exposed to RUM
# NEXT_PUBLIC_BUILD_ID=local
# ── Google OAuth ──────────────────────────────────────────────────────────────
# Google OAuth 2.0 Web Client ID. Create in Google Cloud Console:
# APIs & Services → Credentials → Create OAuth client ID → Web application
# Add your origin (e.g. http://localhost:3000, https://betta.pay) to
# "Authorized JavaScript origins".
# When unset, empty or whitespace the app does NOT mount GoogleOAuthProvider
# (prevents SDK errors from empty string). Login page shows a disabled
# "Continue with Google" button with tooltip "Google login not configured — set NEXT_PUBLIC_GOOGLE_CLIENT_ID"
# and a dev-only console.warn. Set to enable Google sign-in.
NEXT_PUBLIC_GOOGLE_CLIENT_ID=1234567890-abc123.apps.googleusercontent.com
# ── Stellar / Soroban ─────────────────────────────────────────────────────────
# Stellar network: testnet | mainnet (also accepts "public" as alias for mainnet)
NEXT_PUBLIC_STELLAR_NETWORK=testnet
# Horizon RPC endpoint
NEXT_PUBLIC_STELLAR_HORIZON_URL=https://horizon-testnet.stellar.org
# For mainnet use: https://horizon.stellar.org
# Soroban RPC endpoint (required for pay/[linkId] flows)
# NEXT_PUBLIC_SOROBAN_RPC_URL=https://soroban-testnet.stellar.org
# Stellar network passphrase (required for pay flows when signing)
# NEXT_PUBLIC_STELLAR_NETWORK_PASSPHRASE=Test SDF Network ; September 2015
# Merchant Stellar address for settlement (required for pay flows)
# NEXT_PUBLIC_MERCHANT_ADDRESS=GB...YOUR_MERCHANT_ADDRESS
# ── Contracts ─────────────────────────────────────────────────────────────────
# Soroban settlement contract ID. Defaults to embedded demo: CBGBGKJSUY7XYB6HWW4CVAU6MW2KD25FSF45E5KCP53TKUK374MBZNFB
# NEXT_PUBLIC_SETTLEMENT_CONTRACT_ID=CA3D...XYZ
# USDT contract address (SAC / custom)
# NEXT_PUBLIC_USDT_CONTRACT_ID=CC...USDT
# ── WalletConnect (optional) ──────────────────────────────────────────────────
# WalletConnect Cloud project ID — REQUIRED to pair mobile wallets (Lobstr, Solar…).
# Create one at https://cloud.walletconnect.com → Create project → copy "Project ID"
# (32 hex chars) and add your origin (e.g. http://localhost:3000) to allowed domains.
# When unset/empty the relay would reject pairing, so the app treats WalletConnect as
# not configured: the connect modal shows a configuration notice instead of a QR code
# and a dev-only console.warn is logged. Freighter is unaffected.
# NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=9f3c2e1a4b5d6c7e8f9a0b1c2d3e4f5a
# WalletConnect relay URL (defaults to wss://relay.walletconnect.com)
# NEXT_PUBLIC_WALLETCONNECT_RELAY_URL=wss://relay.walletconnect.com
# ── Misc optional ─────────────────────────────────────────────────────────────
# Local dev only: when `true`, the admin /overview page falls back to
# illustrative sample figures (clearly labelled "Sample data") if
# `/api/admin/stats` is unreachable. Ignored in production builds — the mock
# module is tree-shaken out and the page shows an error + retry instead.
# NEXT_PUBLIC_ADMIN_STATS_SAMPLE_FALLBACK=false
# reCAPTCHA v2/v3 site key for contact form (when unset, captcha is skipped)
# NEXT_PUBLIC_RECAPTCHA_SITE_KEY=6Le...site_key
# Anchor URL for health checker (optional)
# NEXT_PUBLIC_ANCHOR_URL=https://anchor.example.com