# tetratensor/mt4-mt5-trade-copier-backend architecture

> Architecture diagram of the GitHub repository tetratensor/mt4-mt5-trade-copier-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tetratensor/mt4-mt5-trade-copier-backend
- Repository: https://github.com/tetratensor/mt4-mt5-trade-copier-backend

## Overview

This is a Node.js backend for managing MetaTrader copy-trading accounts, subscriptions, and platform administration. The principal workflow is authenticated account and cluster setup, followed by MT4/MT5 master-trade polling and copier execution, with dashboard analytics and real-time updates. Payments and affiliate management form a separate subscription lifecycle. The trading coordinator is present, but its startup call is commented out in server.js; the payment scheduler call is also commented out. The README documents additional risk and notification capabilities beyond the sampled implementation excerpts.

Main entry points: [`trading/masters/index.master.trading.js`](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/masters/index.master.trading.js) (Trading coordinator), [`config/db/db.js`](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/config/db/db.js) (Platform data), [`controllers/cryptomus.controller.js`](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/cryptomus.controller.js) (Subscriptions and payouts), [`controllers/user.controller.js`](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/user.controller.js) (Identity and settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Accounts and dashboard"]
  node_user_routes["User routes<br/>[user.router.js]"]
  node_dashboard_routes["Dashboard routes"]
  node_admin_routes["Admin routes<br/>[admin.router.js]"]
  node_user_controller["Identity and settings<br/>[user.controller.js]"]
  node_dashboard_controller["Clusters and analytics"]
  node_admin_controller["Admin and affiliates"]
end

subgraph group_trading["Copy trading"]
  node_trading_coordinator["Trading coordinator"]
  node_token_coordinator["Token refresh"]
  node_mt4_master["MT4 master logic"]
  node_mt5_master["MT5 master logic"]
  node_mt4_copier["MT4 copier tracking"]
  node_mt5_copier["MT5 copier tracking"]
end

subgraph group_payments["Payments and affiliates"]
  node_payment_routes["Payment routes"]
  node_payment_controller["Subscriptions and payouts"]
  node_payment_scheduler["Subscription checker<br/>[payment.check.js]"]
end

subgraph group_runtime["Runtime integrations"]
  node_http_server["HTTP server<br/>[server.js]"]
  node_postgres[("Platform data<br/>[db.js]")]
  node_socket_service["Realtime events<br/>[socket.js]"]
end

node_user(("Platform user"))
node_admin(("Administrator"))
node_mt4_bridge["MT4 bridge"]
node_mt5_bridge["MT5 bridge"]
node_cryptomus["Cryptomus gateway"]
node_email_service["EmailJS"]

node_user -->|"sends requests"| node_user_routes
node_user -->|"manages accounts"| node_dashboard_routes
node_admin -->|"manages platform"| node_admin_routes
node_user_routes -->|"dispatches"| node_user_controller
node_dashboard_routes -->|"dispatches"| node_dashboard_controller
node_admin_routes -->|"dispatches"| node_admin_controller
node_user_controller -->|"reads and writes"| node_postgres
node_dashboard_controller -->|"reads and writes"| node_postgres
node_admin_controller -->|"reads and writes"| node_postgres
node_user_controller -.->|"sends email"| node_email_service
node_http_server -->|"initializes"| node_socket_service
node_trading_coordinator -->|"refreshes tokens"| node_token_coordinator
node_trading_coordinator -->|"schedules trading"| node_mt4_master
node_trading_coordinator -->|"schedules trading"| node_mt5_master
node_trading_coordinator -->|"schedules tracking"| node_mt4_copier
node_trading_coordinator -->|"schedules tracking"| node_mt5_copier
node_mt4_master -.->|"uses bridge"| node_mt4_bridge
node_mt5_master -.->|"uses bridge"| node_mt5_bridge
node_token_coordinator -.->|"refreshes access"| node_mt4_bridge
node_token_coordinator -.->|"refreshes access"| node_mt5_bridge
node_payment_routes -->|"dispatches"| node_payment_controller
node_payment_controller -->|"reads and writes"| node_postgres
node_payment_controller -->|"requests payments"| node_cryptomus
node_cryptomus -->|"sends webhooks"| node_payment_controller
node_payment_scheduler -.->|"checks subscriptions"| node_postgres

click node_http_server "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/server.js"
click node_user_routes "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/routers/user.router.js"
click node_dashboard_routes "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/routers/dashboard.router.js"
click node_admin_routes "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/routers/admin.router.js"
click node_user_controller "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/user.controller.js"
click node_dashboard_controller "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/dashboard.controller.js"
click node_admin_controller "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/admin.controller.js"
click node_postgres "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/config/db/db.js"
click node_trading_coordinator "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/masters/index.master.trading.js"
click node_token_coordinator "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/tokens/index.token.update.js"
click node_mt4_master "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/masters/metatrader4.master.trading.js"
click node_mt5_master "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/masters/metatrader5.master.trading.js"
click node_mt4_copier "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/copiers/metatrader4.copier.trading.js"
click node_mt5_copier "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/copiers/metatrader5.copier.trading.js"
click node_payment_routes "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/routers/cryptomus.router.js"
click node_payment_controller "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/cryptomus.controller.js"
click node_payment_scheduler "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/payment/payment.check.js"
click node_socket_service "https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/socket/socket.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_user_routes,node_dashboard_routes,node_admin_routes,node_user_controller,node_dashboard_controller,node_admin_controller,node_user toneBlue
class node_trading_coordinator,node_token_coordinator,node_mt4_master,node_mt5_master,node_mt4_copier,node_mt5_copier toneAmber
class node_payment_routes,node_payment_controller,node_payment_scheduler toneMint
class node_http_server,node_postgres,node_socket_service toneRose
class node_admin,node_mt4_bridge,node_mt5_bridge,node_cryptomus,node_email_service toneIndigo
```

## Components

### Accounts and dashboard

- [User routes](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/routers/user.router.js): `routers/user.router.js`
- [Dashboard routes](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/routers/dashboard.router.js): `routers/dashboard.router.js`
- [Admin routes](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/routers/admin.router.js): `routers/admin.router.js`
- [Identity and settings](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/user.controller.js): `controllers/user.controller.js`
- [Clusters and analytics](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/dashboard.controller.js): `controllers/dashboard.controller.js`
- [Admin and affiliates](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/admin.controller.js): `controllers/admin.controller.js`

### Copy trading

- [Trading coordinator](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/masters/index.master.trading.js): `trading/masters/index.master.trading.js`
- [Token refresh](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/tokens/index.token.update.js): `trading/tokens/index.token.update.js`
- [MT4 master logic](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/masters/metatrader4.master.trading.js): `trading/masters/metatrader4.master.trading.js`
- [MT5 master logic](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/masters/metatrader5.master.trading.js): `trading/masters/metatrader5.master.trading.js`
- [MT4 copier tracking](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/copiers/metatrader4.copier.trading.js): `trading/copiers/metatrader4.copier.trading.js`
- [MT5 copier tracking](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/trading/copiers/metatrader5.copier.trading.js): `trading/copiers/metatrader5.copier.trading.js`

### Payments and affiliates

- [Payment routes](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/routers/cryptomus.router.js): `routers/cryptomus.router.js`
- [Subscriptions and payouts](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/controllers/cryptomus.controller.js): `controllers/cryptomus.controller.js`
- [Subscription checker](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/payment/payment.check.js): `payment/payment.check.js`

### Runtime integrations

- [HTTP server](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/server.js): `server.js`
- [Platform data](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/config/db/db.js): `config/db/db.js`
- [Realtime events](https://github.com/tetratensor/mt4-mt5-trade-copier-backend/blob/main/socket/socket.js): `socket/socket.js`

### Other components

- **Platform user**
- **Administrator**
- **MT4 bridge**
- **MT5 bridge**
- **Cryptomus gateway**
- **EmailJS**

## Connections

- Platform user → User routes: sends requests
- Platform user → Dashboard routes: manages accounts
- Administrator → Admin routes: manages platform
- User routes → Identity and settings: dispatches
- Dashboard routes → Clusters and analytics: dispatches
- Admin routes → Admin and affiliates: dispatches
- Identity and settings → Platform data: reads and writes
- Clusters and analytics → Platform data: reads and writes
- Admin and affiliates → Platform data: reads and writes
- Identity and settings → EmailJS: sends email
- HTTP server → Realtime events: initializes
- Trading coordinator → Token refresh: refreshes tokens
- Trading coordinator → MT4 master logic: schedules trading
- Trading coordinator → MT5 master logic: schedules trading
- Trading coordinator → MT4 copier tracking: schedules tracking
- Trading coordinator → MT5 copier tracking: schedules tracking
- MT4 master logic → MT4 bridge: uses bridge
- MT5 master logic → MT5 bridge: uses bridge
- Token refresh → MT4 bridge: refreshes access
- Token refresh → MT5 bridge: refreshes access
- Payment routes → Subscriptions and payouts: dispatches
- Subscriptions and payouts → Platform data: reads and writes
- Subscriptions and payouts → Cryptomus gateway: requests payments
- Cryptomus gateway → Subscriptions and payouts: sends webhooks
- Subscription checker → Platform data: checks subscriptions
