# poker-organizer

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

---

Рабочее приложение клуба: завести турнир, провести день игры от чек-ина до
результатов, вести live-пульт. Им пользуются владельцы клубов, турнирные
директора и дилеры — с разными правами.

**Где код:** `github.com/Klonaps/poker-organizer`, локально `repos/poker-organizer`.

## Стек

Тот же, что у игрока: Expo 57 / React Native 0.86, expo-router, TanStack Query,
zustand, i18next, socket.io-client. Отличие — целевое устройство: прежде всего
**Expo Web на планшете или ноутбуке в заведении**, а не телефон.

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

```bash
pnpm --dir repos/poker-organizer exec expo start --web --port 8092 --clear
```

Адрес API — `EXPO_PUBLIC_API_URL`, для локального стенда `http://localhost:3001`.

## Как собирается и куда деплоится

`pnpm build:web` — `expo export --platform web` плюс минификация HTML, дальше
nginx в образе. Единственный аргумент сборки — `EXPO_PUBLIC_API_URL`, и он
тоже **Build Arg, а не Env**: Metro вшивает значение в бандл.

## Реалтайм

Организатор подключается к namespace `/live` с токеном в handshake
(`auth: { token }`) — гейт требует JWT на подключении. Это стоит помнить при
отладке: молчащий сокет чаще всего означает отсутствующий или протухший токен,
а не потерянное соединение.

## Тесты

```bash
pnpm test
```

Это `jest --forceExit` — по той же причине, что у игрока.

## Что рядом

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