poker-admin
Внутренний инструмент команды платформы: клубы, контент, справочники, модерация игроков, метрики и настройки рейтинга.
Где код: github.com/Klonaps/poker-admin, локально repos/poker-admin.
Снаружи — admin.novapoker.ru.
React 19, Vite 8, TanStack Router и TanStack Query, zustand, Tailwind 4, i18next, lucide-react. Обычный SPA, собираемый в статику.
Как запустить локально
Заголовок раздела «Как запустить локально»pnpm --dir repos/poker-admin dev --port 5199 --strictPortКак собирается и куда деплоится
Заголовок раздела «Как собирается и куда деплоится»pnpm build — это tsc -b && vite build. Дальше multi-stage Dockerfile кладёт
dist/ в nginx:alpine; Dokploy тянет образ и вешает домен.
Грабля, на которую наступают все
Заголовок раздела «Грабля, на которую наступают все»VITE_API_URL — аргумент сборки, а не переменная рантайма. Vite подставляет
значение прямо в бандл, поэтому сменить адрес API можно только пересборкой
образа. В Dokploy он задаётся в Build Args, не в Env: правка переменной
окружения без пересборки не меняет ничего, и это выглядит как «деплой не
применился».
Значение — голый origin (https://novapoker.ru), без /api/v1: префикс
версии дописывает HTTP-клиент в src/api/client.ts, чтобы он жил в одном месте.
Как проверить, что реально вшито в прод-бандл: скачать /assets/index-*.js
через curl --compressed и найти в нём /api/v1 — рядом стоит стрелочная
функция базового адреса.
Отдача статики
Заголовок раздела «Отдача статики»nginx.conf кеширует /assets/ навсегда (имена содержат хеш содержимого),
отдаёт index.html с no-cache и заворачивает неизвестные пути в index.html:
это SPA с клиентской маршрутизацией, прямой заход на /organizers обязан
вернуть приложение, а не 404.
pnpm testЭто vitest run. Сетевые запросы в тестах перехватывает msw.
Что рядом
Заголовок раздела «Что рядом»- Ландшафт и границы — как сервис связан с остальными.