-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy path.env.example
More file actions
129 lines (100 loc) · 5.55 KB
/
Copy path.env.example
File metadata and controls
129 lines (100 loc) · 5.55 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
# .env.example — copy to .env and fill in values
# IMPORTANT: Never commit secrets to version control. Use ./scripts/generate-secrets.sh
# for secure random values. See README.md "Pre-Beta Environment Setup Guide" for details.
# ── DATABASE (Required for API) ────────────────────────────────
# PostgreSQL connection string. Default for local Docker: port 5434
DATABASE_URL="postgresql://tavvio:password@localhost:5434/tavvio"
# ── REDIS (Required for API) ───────────────────────────────────
# Redis connection string for caching, job queues, and rate limiting
REDIS_URL="redis://localhost:6379"
# ── AUTHENTICATION (Required for API) ──────────────────────────
# JWT_SECRET: Generate via `./scripts/generate-secrets.sh`
# Base64-encoded 64 bytes (512 bits) for HS256 signing
JWT_SECRET="your-jwt-secret-here"
# JWT_EXPIRY: Token expiration time (used for session management)
JWT_EXPIRY="7d"
# BANK_SESSION_ENCRYPTION_KEY: Generate via `./scripts/generate-secrets.sh`
# Base64-encoded 32 bytes for AES-256 encryption of bank session data
BANK_SESSION_ENCRYPTION_KEY="your-bank-session-encryption-key-here"
# BANK_WEBHOOK_SECRET: Generate via `./scripts/generate-secrets.sh`
# Used to verify integrity of bank webhook payloads
BANK_WEBHOOK_SECRET="your-bank-webhook-secret-here"
# ── STELLAR (Required for payments) ────────────────────────────
# Network choice: "testnet" for development, "mainnet" for production
STELLAR_NETWORK="testnet"
# Stellar RPC endpoints
STELLAR_HORIZON_URL="https://horizon-testnet.stellar.org"
STELLAR_SOROBAN_RPC_URL="https://soroban-testnet.stellar.org"
# Relay keypair for HTLC hot wallet operations (NEVER share or commit)
# Generate via: stellar key generate
STELLAR_RELAY_KEYPAIR_SECRET="S..."
STELLAR_RELAY_PUBLIC_KEY="G..."
# ── SOROBAN CONTRACTS (Required for settlement) ────────────────
# Contract IDs deployed on Stellar (get from deployment output)
SOROBAN_FEE_COLLECTOR_CONTRACT_ID="C..."
SOROBAN_ESCROW_CONTRACT_ID="C..."
# ── EVM CHAINS (Required for multi-chain support) ───────────────
# EVM relay private key for hot wallet operations (NEVER share or commit)
# Format: 0x<hex>, generate via ethers.js or MetaMask
EVM_RELAY_PRIVATE_KEY="0x..."
# HTLC contract addresses on each EVM chain
HTLC_ADDRESS_ETHEREUM="0x..."
HTLC_ADDRESS_BASE="0x..."
HTLC_ADDRESS_BNB="0x..."
HTLC_ADDRESS_POLYGON="0x..."
HTLC_ADDRESS_ARBITRUM="0x..."
HTLC_ADDRESS_AVALANCHE="0x..."
# RPC endpoints for each chain (use Alchemy/Infura for production reliability)
RPC_ETHEREUM="https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY"
RPC_BASE="https://base-mainnet.g.alchemy.com/v2/YOUR_KEY"
RPC_BNB="https://bsc-dataseed.binance.org"
RPC_POLYGON="https://polygon-rpc.com"
RPC_ARBITRUM="https://arb1.arbitrum.io/rpc"
RPC_AVALANCHE="https://api.avax.network/ext/bc/C/rpc"
# ── CIRCLE CCTP (For stablecoin bridging) ──────────────────────
# API key from Circle developer portal
CIRCLE_API_KEY="your-circle-api-key"
# ── WORMHOLE (For cross-chain messaging) ───────────────────────
# Environment: "Testnet" for development, "Mainnet" for production
WORMHOLE_ENV="Testnet"
# ── LAYERSWAP (For Starknet routing) ───────────────────────────
# API key from Layerswap dashboard
LAYERSWAP_API_KEY="your-layerswap-api-key"
# ── MONEYGRAM (For fiat settlement) ────────────────────────────
# Testnet domain (comment out for mainnet)
MONEYGRAM_HOME_DOMAIN="extstellar.moneygram.com"
# Mainnet domain (uncomment for production)
# MONEYGRAM_HOME_DOMAIN="stellar.moneygram.com"
# ── STRIPE (For card payments) ─────────────────────────────────
# Secret key from Stripe dashboard (format: sk_test_... or sk_live_...)
STRIPE_SECRET_KEY="sk_test_..."
# Webhook signing secret from Stripe webhook settings
STRIPE_WEBHOOK_SECRET="whsec_..."
# ── EMAIL (For notifications) ──────────────────────────────────
# API key from Resend dashboard
RESEND_API_KEY="re_..."
# From email address for notifications
EMAIL_FROM="payments@useroutr.com"
# ── STORAGE (For media uploads) ────────────────────────────────
# Cloudinary configuration for image storage
CLOUDINARY_CLOUD_NAME="your-cloud-name"
CLOUDINARY_API_KEY="your-cloudinary-api-key"
CLOUDINARY_API_SECRET="your-cloudinary-api-secret"
# ── APPLICATION CONFIG ─────────────────────────────────────────
# Port the API runs on
PORT=3000
# API URL for external access (used in webhooks, emails, etc.)
API_URL="https://api.yourdomain.com"
# Node environment
NODE_ENV="development"
# Frontend URLs (for CORS and redirects)
NEXT_PUBLIC_API_URL="http://localhost:3000"
WWW_URL="http://localhost:3000"
DASHBOARD_URL="http://localhost:3001"
CHECKOUT_URL="http://localhost:3002"
# Platform fee in basis points (50 = 0.5%)
USEROUTR_FEE_BPS=50
# Stripe publishable key (public-facing)
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_test_..."
# Bank session TTL in hours
BANK_SESSION_TTL_HOURS=24