167 lines
4.2 KiB
Markdown
167 lines
4.2 KiB
Markdown
|
|
# Environment Configuration Guide
|
||
|
|
|
||
|
|
This document describes all environment variables used in the Solace Treasury DApp.
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
The project uses environment variables across three workspaces:
|
||
|
|
- **Frontend**: Next.js public environment variables
|
||
|
|
- **Backend**: Server-side configuration
|
||
|
|
- **Contracts**: Hardhat deployment configuration
|
||
|
|
|
||
|
|
## Frontend Environment Variables
|
||
|
|
|
||
|
|
**File**: `frontend/.env.local` (development) or `.env.production` (production)
|
||
|
|
|
||
|
|
### Required Variables
|
||
|
|
|
||
|
|
```env
|
||
|
|
# WalletConnect Project ID
|
||
|
|
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id_here
|
||
|
|
|
||
|
|
# Chain 138 Configuration (Primary Network)
|
||
|
|
NEXT_PUBLIC_CHAIN138_RPC_URL=http://192.168.11.250:8545
|
||
|
|
NEXT_PUBLIC_CHAIN138_WS_URL=ws://192.168.11.250:8546
|
||
|
|
NEXT_PUBLIC_CHAIN_ID=138
|
||
|
|
|
||
|
|
# Contract Addresses (after deployment)
|
||
|
|
NEXT_PUBLIC_TREASURY_WALLET_ADDRESS=0x...
|
||
|
|
NEXT_PUBLIC_SUB_ACCOUNT_FACTORY_ADDRESS=0x...
|
||
|
|
```
|
||
|
|
|
||
|
|
### Optional Variables
|
||
|
|
|
||
|
|
```env
|
||
|
|
# Other Network Support
|
||
|
|
NEXT_PUBLIC_SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY
|
||
|
|
NEXT_PUBLIC_MAINNET_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
|
||
|
|
```
|
||
|
|
|
||
|
|
**Note**: All frontend variables must be prefixed with `NEXT_PUBLIC_` to be accessible in the browser.
|
||
|
|
|
||
|
|
## Backend Environment Variables
|
||
|
|
|
||
|
|
**File**: `backend/.env`
|
||
|
|
|
||
|
|
### Required Variables
|
||
|
|
|
||
|
|
```env
|
||
|
|
# Database Configuration
|
||
|
|
DATABASE_URL=postgresql://user:password@host:port/database
|
||
|
|
|
||
|
|
# Chain 138 Configuration
|
||
|
|
RPC_URL=http://192.168.11.250:8545
|
||
|
|
CHAIN_ID=138
|
||
|
|
|
||
|
|
# Contract Address (after deployment)
|
||
|
|
CONTRACT_ADDRESS=0x...
|
||
|
|
```
|
||
|
|
|
||
|
|
### Optional Variables
|
||
|
|
|
||
|
|
```env
|
||
|
|
# Server Configuration
|
||
|
|
PORT=3001
|
||
|
|
NODE_ENV=production
|
||
|
|
```
|
||
|
|
|
||
|
|
## Contracts Environment Variables
|
||
|
|
|
||
|
|
**File**: `contracts/.env`
|
||
|
|
|
||
|
|
### Required Variables
|
||
|
|
|
||
|
|
```env
|
||
|
|
# Chain 138 RPC URL (Primary Network)
|
||
|
|
CHAIN138_RPC_URL=http://192.168.11.250:8545
|
||
|
|
|
||
|
|
# Deployment Account
|
||
|
|
PRIVATE_KEY=0x...your_private_key_here
|
||
|
|
```
|
||
|
|
|
||
|
|
### Optional Variables
|
||
|
|
|
||
|
|
```env
|
||
|
|
# Other Networks
|
||
|
|
SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY
|
||
|
|
MAINNET_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
|
||
|
|
|
||
|
|
# Block Explorer API Keys (for contract verification)
|
||
|
|
ETHERSCAN_API_KEY=your_key
|
||
|
|
POLYGONSCAN_API_KEY=your_key
|
||
|
|
OPTIMISTIC_ETHERSCAN_API_KEY=your_key
|
||
|
|
BASESCAN_API_KEY=your_key
|
||
|
|
GNOSIS_API_KEY=your_key
|
||
|
|
|
||
|
|
# Cloudflare (if using Cloudflare tunnels)
|
||
|
|
CLOUDFLARE_TUNNEL_TOKEN=...
|
||
|
|
CLOUDFLARE_API_KEY=...
|
||
|
|
CLOUDFLARE_ACCOUNT_ID=...
|
||
|
|
CLOUDFLARE_ZONE_ID=...
|
||
|
|
CLOUDFLARE_DOMAIN=...
|
||
|
|
|
||
|
|
# MetaMask/Infura (optional)
|
||
|
|
METAMASK_API_KEY=...
|
||
|
|
METAMASK_SECRET=...
|
||
|
|
INFURA_GAS_API=...
|
||
|
|
```
|
||
|
|
|
||
|
|
## Chain 138 Configuration
|
||
|
|
|
||
|
|
Chain 138 is the primary network for this DApp. Default configuration:
|
||
|
|
|
||
|
|
- **Chain ID**: 138
|
||
|
|
- **RPC Endpoints**:
|
||
|
|
- Primary: `http://192.168.11.250:8545`
|
||
|
|
- Backup 1: `http://192.168.11.251:8545`
|
||
|
|
- Backup 2: `http://192.168.11.252:8545`
|
||
|
|
- **WebSocket**: `ws://192.168.11.250:8546`
|
||
|
|
- **Block Explorer**: `http://192.168.11.140`
|
||
|
|
- **Network Type**: Custom Besu (QBFT consensus)
|
||
|
|
- **Gas Price**: 0 (zero base fee)
|
||
|
|
|
||
|
|
## Environment File Structure
|
||
|
|
|
||
|
|
```
|
||
|
|
solace-bg-dubai/
|
||
|
|
├── frontend/
|
||
|
|
│ ├── .env.local # Local development (gitignored)
|
||
|
|
│ ├── .env.production # Production build (gitignored)
|
||
|
|
│ └── .env.example # Template file
|
||
|
|
├── backend/
|
||
|
|
│ ├── .env # Backend API config (gitignored)
|
||
|
|
│ ├── .env.indexer # Indexer config (gitignored)
|
||
|
|
│ └── .env.example # Template file
|
||
|
|
└── contracts/
|
||
|
|
├── .env # Deployment config (gitignored)
|
||
|
|
└── .env.example # Template file
|
||
|
|
```
|
||
|
|
|
||
|
|
## Setup Instructions
|
||
|
|
|
||
|
|
1. **Copy example files**:
|
||
|
|
```bash
|
||
|
|
cd frontend && cp .env.example .env.local
|
||
|
|
cd ../backend && cp .env.example .env
|
||
|
|
cd ../contracts && cp .env.example .env
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Fill in values**:
|
||
|
|
- Update database credentials
|
||
|
|
- Add RPC URLs
|
||
|
|
- Add contract addresses after deployment
|
||
|
|
- Add API keys as needed
|
||
|
|
|
||
|
|
3. **Never commit .env files**:
|
||
|
|
- All `.env` files are in `.gitignore`
|
||
|
|
- Only commit `.env.example` files
|
||
|
|
|
||
|
|
## Security Notes
|
||
|
|
|
||
|
|
- ⚠️ Never commit `.env` files to git
|
||
|
|
- ⚠️ Use strong database passwords
|
||
|
|
- ⚠️ Protect private keys (use hardware wallets for mainnet)
|
||
|
|
- ⚠️ Rotate API keys regularly
|
||
|
|
- ⚠️ Use environment-specific values (dev/staging/prod)
|
||
|
|
|