Перейти к содержимому

Единственный бэкенд платформы: его слушают все три клиентских приложения. 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 -d
cp .env.example apps/server/.env
pnpm i
pnpm --filter server exec prisma migrate dev
pnpm dev

PostgreSQL поднимается через 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% — это условие, а не достижение: по ним считаются очки игроков.