poker-api
Единственный бэкенд платформы: его слушают все три клиентских приложения. HTTP и WebSocket живут на одном порту.
Где код: github.com/Klonaps/poker-api, локально repos/poker-api.
Node 24, TypeScript 5, NestJS 11, Prisma, PostgreSQL 16, @nestjs/websockets +
socket.io, pg-boss для фоновых задач. Это pnpm-workspace из двух пакетов:
apps/server — само приложение, packages/rating — изолированные формулы рейтинга.
Как запустить локально
Заголовок раздела «Как запустить локально»docker compose up -dcp .env.example apps/server/.envpnpm ipnpm --filter server exec prisma migrate devpnpm devPostgreSQL поднимается через docker compose на порту 5433, чтобы не спорить
с локальной базой на 5432. Сервер по умолчанию слушает 3000.
Как собирается и куда деплоится
Заголовок раздела «Как собирается и куда деплоится»Dockerfile в корне репозитория, деплой через Dokploy. Снаружи API живёт на
novapoker.ru с префиксом /api/v1; проверка живости —
GET /api/v1/health. Разделение с веб-сборкой игрока на том же хосте делает
Dokploy по префиксу пути.
Контракт
Заголовок раздела «Контракт»apps/server/openapi.json — 83 пути, собирается командой
pnpm --filter server openapi. Из него приложение игрока генерирует типы.
Файл коммитится: он и есть контракт, по которому фронты живут.
pnpm testЗапускает pnpm -r test по всему workspace. Формулы в packages/rating покрыты
на 100% — это условие, а не достижение: по ним считаются очки игроков.
Что рядом
Заголовок раздела «Что рядом»- Ландшафт и границы — как сервис связан с остальными.