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

Внутренний инструмент команды платформы: клубы, контент, справочники, модерация игроков, метрики и настройки рейтинга.

Где код: 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.