# poker-api

Источник: https://docs.novapoker.ru/dev/poker-api/
Дорожка: разработка
Сверено с кодом: Mon Aug 24
Код: repos/poker-api/README.md, repos/poker-api/apps/server/package.json

---

Единственный бэкенд платформы: его слушают все три клиентских приложения.
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` — изолированные формулы рейтинга.

## Как запустить локально

```bash
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`. Из него приложение игрока генерирует типы.
Файл коммитится: он и есть контракт, по которому фронты живут.

## Тесты

```bash
pnpm test
```

Запускает `pnpm -r test` по всему workspace. Формулы в `packages/rating` покрыты
на 100% — это условие, а не достижение: по ним считаются очки игроков.

## Что рядом

- [Ландшафт и границы](https://docs.novapoker.ru/dev.md) — как сервис связан с остальными.
