Ландшафт и границы
Один бэкенд и три фронта под разные роли.
| Сервис | Стек | Таргет | Аудитория |
|---|---|---|---|
| poker-api | Node, TypeScript, NestJS, Prisma, PostgreSQL, socket.io, pg-boss; pnpm-workspace (apps/server + packages/rating) |
сервер, HTTP и WS на одном порту | все клиенты |
| poker-player | Expo / React Native, expo-router, react-query, zustand, i18next | iOS, Android, web-сборка | игроки |
| poker-organizer | Expo / React Native, тот же набор | прежде всего Expo Web — планшет или ноутбук в заведении | владельцы клубов, ТД, дилеры |
| poker-admin | React + Vite, TanStack Router, react-query, zustand, Tailwind | статика в dist/ |
платформенные админы |
Контракт между фронтами и бэкендом
Заголовок раздела «Контракт между фронтами и бэкендом»Связь только по HTTP и WebSocket. Общего кода у фронтов и бэкенда нет —
контракт материализован в apps/server/openapi.json (83 пути) и собирается
командой pnpm --filter server openapi из CLI-плагина @nestjs/swagger.
У приложения игрока из него генерируются типы: pnpm gen:api кладёт результат
в src/api/schema.d.ts.
Базовый адрес API у каждого фронта — переменная окружения: VITE_API_URL у
админки, EXPO_PUBLIC_API_URL у игрока и организатора. Значение — голый origin
без версии; префикс /api/v1 дописывает HTTP-клиент, чтобы он жил в одном месте.
У админки эта переменная — аргумент сборки, а не переменная рантайма. Подробности и последствия — в карточке poker-admin.
Границы: чего в системе нет
Заголовок раздела «Границы: чего в системе нет»- Денежного контура.
entryFee— мёртвая колонка со значением 0,paymentStatusвсегдаnot_required. - Ре-энтри, ребаев, аддонов. Вылет окончателен, обратим только через отмену последнего вылета.
- Учёта нокаутов. Кто кого выбил, не хранится: в рейтинге есть только места и победы.
- Работающего
lateRegLevel. Поле хранится в шаблоне блайндов, но нигде не проверяется. - Статуса
announced. Он есть в перечислении, но не используется — турнир создаётся сразу вregistration. - Полноценной пагинации. Ограничения фиксированные: афиша не больше 50, уровневый лидерборд — топ-100, уведомления — последние 50; остальные списки отдаются целиком.
- Английского интерфейса. Двуязычны только данные, строки интерфейса русские.
- Нативных сборок. EAS не настроен; рабочие таргеты — Expo Dev Server и web-экспорт.
Что рядом
Заголовок раздела «Что рядом»- Карточки сервисов: poker-api, poker-player, poker-organizer, poker-admin.
- Продуктовый обзор — тот же ландшафт со стороны пользователя.
- Карта документации — все статьи и дата последней сверки с кодом.