Files
solace-bg-dubai/README.md
defiQUG c94eb595f8
Some checks failed
CI / lint-and-test (push) Has been cancelled
Initial commit: add .gitignore and README
2026-02-09 21:51:53 -08:00

257 lines
6.1 KiB
Markdown

# Solace Bank Group Treasury Management DApp
A comprehensive Treasury Management DApp with Smart Wallet capabilities, multisig support, sub-accounts, and advanced 3D UI.
## Architecture
- **Frontend**: Next.js 14+ with TypeScript, Tailwind CSS, GSAP, and Three.js
- **Smart Contracts**: Solidity contracts using Hardhat
- **Backend**: TypeScript with Drizzle ORM and PostgreSQL
- **Blockchain**: Chain 138 (Custom Besu Network), Ethereum (mainnet and Sepolia testnet)
## Project Structure
```
solace-bg-dubai/
├── contracts/ # Smart contracts
├── frontend/ # Next.js application
├── backend/ # Backend API and indexer
└── shared/ # Shared types and utilities
```
## Getting Started
### Prerequisites
- Node.js >= 18
- PostgreSQL database
- Ethereum RPC endpoint (Alchemy/Infura)
### Installation
1. Install pnpm (if not already installed):
```bash
npm install -g pnpm
```
2. Install dependencies:
```bash
pnpm install
```
3. Set up environment variables:
- Copy `.env.example` files in each workspace
- Configure database, RPC URLs, and contract addresses
4. Set up database:
```bash
cd backend
pnpm run db:generate
pnpm run db:migrate
```
5. Deploy contracts:
```bash
cd contracts
pnpm run compile
pnpm run deploy:sepolia # or deploy:local
pnpm run deploy:chain138 # Deploy to Chain 138
```
6. Start development servers:
```bash
# Root directory
pnpm run dev
# Or individually:
cd frontend && pnpm run dev
cd backend && pnpm run dev
cd backend && pnpm run indexer:start
```
## Features
### Smart Wallet
- Multisig support (N-of-M threshold)
- Owner management
- Transaction proposals and approvals
- ERC-20 and native token transfers
### Sub-Accounts
- Create sub-wallets under main treasury
- Deterministic address generation
- Inherited signer configuration
### Banking Functions
- Receive deposits (with QR code)
- Send payments
- Internal transfers between accounts
- Approval management
### UI/UX
- 3D visualizations with Three.js
- Smooth animations with GSAP
- Parallax effects
- Responsive design
## Development
### Smart Contracts
```bash
cd contracts
pnpm run compile # Compile contracts
pnpm run test # Run tests
pnpm run coverage # Generate coverage report
```
### Frontend
```bash
cd frontend
pnpm run dev # Start dev server
pnpm run build # Build for production
pnpm run lint # Run linter
```
### Backend
```bash
cd backend
pnpm run dev # Start API server
pnpm run indexer:start # Start event indexer
pnpm run db:migrate # Run database migrations
```
## Environment Variables
### Frontend
- `NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID` - WalletConnect project ID
- `NEXT_PUBLIC_SEPOLIA_RPC_URL` - Sepolia RPC endpoint
- `NEXT_PUBLIC_TREASURY_WALLET_ADDRESS` - Deployed treasury wallet address
- `NEXT_PUBLIC_SUB_ACCOUNT_FACTORY_ADDRESS` - Deployed factory address
### Backend
- `DATABASE_URL` - PostgreSQL connection string
- `RPC_URL` - Ethereum RPC endpoint
- `CHAIN_ID` - Chain ID (1 for mainnet, 11155111 for Sepolia)
- `CONTRACT_ADDRESS` - Treasury wallet contract address
### Contracts
- `SEPOLIA_RPC_URL` - Sepolia RPC endpoint
- `MAINNET_RPC_URL` - Mainnet RPC endpoint
- `CHAIN138_RPC_URL` - Chain 138 RPC endpoint (default: http://192.168.11.250:8545)
- `PRIVATE_KEY` - Deployer private key
- `ETHERSCAN_API_KEY` - Etherscan API key for verification
## Chain 138 Deployment
This DApp is configured to work with Chain 138, a custom Besu blockchain network.
### Quick Setup
1. Configure Chain 138:
```bash
./scripts/setup-chain138.sh
```
2. Deploy contracts to Chain 138:
```bash
cd contracts
pnpm run deploy:chain138
```
3. Update environment files with deployed contract addresses
### Chain 138 Configuration
- **Chain ID**: 138
- **RPC Endpoints**:
- http://192.168.11.250:8545
- http://192.168.11.251:8545
- http://192.168.11.252:8545
- **WebSocket**: ws://192.168.11.250:8546
- **Network Type**: Custom Besu (QBFT consensus)
## Proxmox VE Deployment
The DApp can be deployed on Proxmox VE using LXC containers.
### Prerequisites
- Proxmox VE host with LXC support
- Ubuntu 22.04 LTS template available
- Network access to Chain 138 RPC nodes (192.168.11.250-252)
### Deployment Steps
1. **Configure deployment settings**:
```bash
cd deployment/proxmox
# Edit config/dapp.conf with your Proxmox settings
```
2. **Deploy all components**:
```bash
sudo ./deploy-dapp.sh
```
3. **Deploy individual components**:
```bash
sudo ./deploy-database.sh # PostgreSQL database
sudo ./deploy-backend.sh # Backend API
sudo ./deploy-indexer.sh # Event indexer
sudo ./deploy-frontend.sh # Frontend application
```
### Container Specifications
| Component | VMID | IP Address | Resources |
|-----------|------|------------|-----------|
| Frontend | 3000 | 192.168.11.60 | 2GB RAM, 2 CPU, 20GB disk |
| Backend | 3001 | 192.168.11.61 | 2GB RAM, 2 CPU, 20GB disk |
| Database | 3002 | 192.168.11.62 | 4GB RAM, 2 CPU, 50GB disk |
| Indexer | 3003 | 192.168.11.63 | 2GB RAM, 2 CPU, 30GB disk |
### Post-Deployment
1. **Deploy contracts to Chain 138** (if not already done)
2. **Copy environment files to containers**:
```bash
pct push 3000 frontend/.env.production /opt/solace-frontend/.env.production
pct push 3001 backend/.env /opt/solace-backend/.env
pct push 3003 backend/.env.indexer /opt/solace-indexer/.env.indexer
```
3. **Run database migrations**:
```bash
pct exec 3001 -- bash -c 'cd /opt/solace-backend && pnpm run db:migrate'
```
4. **Start services**:
```bash
pct exec 3001 -- systemctl start solace-backend
pct exec 3003 -- systemctl start solace-indexer
pct exec 3000 -- systemctl start solace-frontend
```
5. **Check service status**:
```bash
pct exec 3000 -- systemctl status solace-frontend
pct exec 3001 -- systemctl status solace-backend
pct exec 3003 -- systemctl status solace-indexer
```
### Nginx Reverse Proxy
For public access, set up Nginx as a reverse proxy. A template configuration is available at:
- `deployment/proxmox/templates/nginx.conf`
### Documentation
For detailed deployment instructions, see:
- `deployment/proxmox/README.md` (if created)
- `scripts/setup-chain138.sh` - Chain 138 configuration helper
## License
Private - Solace Bank Group PLC (Dubai)