System Architecture¶
Overview¶
High-level system architecture documentation for Saga Platform.
System Diagram¶
flowchart TB
subgraph UI["User Interface Layer"]
UA["User App<br/>(Next.js)"]
AA["Admin App<br/>(Next.js)"]
end
subgraph BACKEND["Backend Layer (Go)"]
subgraph API["REST API Server (Chi Router)"]
EP1["/api/user/*"]
EP2["/api/admin/*"]
EP3["/api/auth/*"]
end
subgraph BL["Business Logic Layer"]
BS["Balance Service"]
IS["Investment Service"]
WS["Withdrawal Service"]
AS["Auth Service (JWT)"]
C2B["Crypto2B Integration"]
end
subgraph DA["Data Access Layer"]
UR["User Repository"]
TR["Transaction Repository"]
IR["Investment Repository"]
end
end
subgraph EXTERNAL["External Services"]
DB[("PostgreSQL<br/>:5432")]
C2API["Crypto2B API<br/>(Deposits)"]
FS["File System<br/>(Logs)"]
end
UA -->|HTTPS| API
AA -->|HTTPS| API
API --> BL
BL --> DA
DA --> DB
BL --> C2API
DA --> FS
style UI fill:#e3f2fd
style BACKEND fill:#fff3e0
style EXTERNAL fill:#e8f5e9
Core Components¶
Frontend Applications¶
User App (/frontend/user-app):
- Purpose: End-user interface for investments
- Framework: Next.js 14 (App Router)
- Features:
- Supabase OAuth authentication
- Investment management
- Balance monitoring
- Transaction history
Admin App (/frontend/admin-app):
- Purpose: Administrative dashboard
- Framework: Next.js 14 (App Router)
- Features:
- User management
- Withdrawal approval
- System monitoring
- Investment oversight
Backend Services¶
Auth Service:
- Supabase Auth integration (Google OAuth, email/password)
- JWT token generation and validation
- Role-based access control (user/admin)
Balance Service:
- Real-time balance calculations
- Multi-currency support (USD, USDC, USDT)
- Investment yields computation
Investment Service:
- Investment creation and management
- Strategy-based returns (conservative, balanced, aggressive)
- Automatic yield calculations
Deposit Service (Crypto2B):
- External API integration for crypto deposits
- Webhook callbacks for deposit confirmations
- Auto-investment on deposit completion
Database Schema¶
Key tables:
- users - User accounts and profiles
- transactions - Financial transactions (append-only)
- investments - User investments with strategies
- transaction_requests - Withdrawal requests
API Structure¶
User API (/api/user/)¶
GET /investments- List user investmentsPOST /investments- Create investmentGET /balances- Get user balancesPOST /withdrawals- Request withdrawal
Admin API (/api/admin/)¶
GET /users- List all usersGET /investments- List all investmentsPOST /withdrawals/:id/approve- Approve withdrawalPOST /deposits/emulate- Emulate deposit (dev)
Configuration¶
Key config files:
- config/network.yaml - Domains, ports
- config/database.yaml - PostgreSQL connection
- config/auth.yaml - Supabase, JWT settings