Арбитражный терминал для торговли спредов на криптовалютных фьючерсах.
spread-terminal/
├── apps/
│ ├── terminal-backend/ # API + WS сервер + торговая логика
│ └── terminal-frontend/ # React SPA терминала
├── packages/
│ ├── shared/ # общие типы
│ └── exchanges/ # адаптеры бирж
└── docker-compose.yml # Postgres + Redis для разработки
Требования: Node 22+, pnpm 10+, Docker.
# 1. Установить зависимости
pnpm install
# 2. Скопировать .env
cp .env.example .env
# 3. Поднять Postgres + Redis
pnpm infra:up
# 4. Запустить backend и frontend в watch-режиме
pnpm dev
/health)Backend подписан на best bid/ask по фьючерсам Binance / Bybit / MEXC / BingX.
| Endpoint | Что возвращает |
|---|---|
GET /api/market/health |
Статус каждого адаптера: connected, tickers/sec, total, reconnects |
GET /api/market/symbols?exchange=binance |
Список нативных символов фьючерсов |
GET /api/market/ticker?exchange=binance&symbol=BTCUSDT |
Лучшие bid/ask + ts |
Поддерживаемые exchange: binance, bybit, mexc, bingx. Символы — каноничные (BTCUSDT).
Особенности по биржам:
| Команда | Что делает |
|---|---|
pnpm dev |
Запустить backend + frontend в watch-режиме |
pnpm build |
Сборка всех пакетов |
pnpm type-check |
Проверка типов во всём монорепо |
pnpm infra:up |
Запустить Postgres + Redis |
pnpm infra:down |
Остановить инфру |
pnpm infra:logs |
Логи инфры |
| # | Фаза | Статус |
|---|---|---|
| 0 | Скелет монорепо | ✅ |
| 1 | Market data 4 бирж (WS) | ✅ |
| 2 | Скринер спредов | ✅ |
| 3 | Settings + балансы | ✅ |
| 4 | Торговые карточки (paper) | ✅ |
| 5 | История и P/L | ✅ |
| 5b | Billing engine | ✅ |
| 6 | Demo-режим (multi-tenant, paper) | ✅ |
| 7a | ЛК + партнёрский кабинет в терминале | ✅ |
| 7b | Портал + TG-бот + лендинг | ✅ |
| 8 | Provisioning Hetzner | ✅ |
| 9 | Крипто-платежи (CryptoCloud) | ✅ |