Все кейсы
01 · Веб-приложениеЖивое демо

Система для покерного клуба

Сайт клуба, запись на игры, пульт ведущего и экран для зала. Весь вечер от анонса до таблицы сезона — без чата, Excel и секундомера.

Главная страница клуба BEST HAND с ближайшей игрой и кнопкой записи
Главная страница клуба на телефоне — название, кнопки «Ближайшая игра» и «Войти»
how it works · poker.borewsha.com
  1. Кто пользуется
    • Игроктелефон — без установки из магазина
    • Ведущийноутбук и телефон у стола
    • Владелецадминка на компьютере
    • Залтелевизор с таймером
  2. Сайт клуба
    • Страницы и экраныто, что видят игроки, ведущий и залNext.js · PWA
  3. Сервер клуба
    • Правила и расчётызапись, касса, очки, рейтинг, журнал измененийJava · Spring Boot
  4. Где хранится
    • База данныхигроки, игры, платежиPostgreSQL
    • Фото вечеровдля отчётов после игрыS3
    • Почтанапоминания игрокамSMTP

Задача

В клубе спортивного покера вечер держится на ведущем. Запись собирают в чате, приход отмечают в тетради, блайнды считают по секундомеру, а очки сезона сводят в Excel ближе к ночи. Ошибся в одной клетке — и через месяц уже никто не помнит, кто на каком месте.

Я хотел собрать всё это в одну систему, которой удобно пользоваться прямо за столом. Игроку — с телефона, ведущему — одной рукой, залу — на телевизоре. Владелец при этом видит деньги, долги и рейтинг без ручных подсчётов.

Клуб в демо выдуманный, но работает всё по-настоящему. Каждые два часа симулятор с ботами проводит игру целиком: запись, рассадку, вылеты, кассу и итоги. Заходите в любое время — какая-нибудь игра будет идти. А в песочнице можно самому побыть ведущим или владельцем.

Как проходит вечер

  1. Шаг 1.ВладелецАнонсПубликует игру: время, цены, сколько мест. Она сразу появляется в афише.
  2. Шаг 2.ИгрокЗаписьЗаписывается с телефона и получает номер. Ранним — бонус к стеку, когда мест нет — лист ожидания.
  3. Шаг 3.ВедущийПриходСканирует QR с телефона игрока. Вход, скидка и бонус подставляются сами.
  4. Шаг 4.ЗалИграНа телевизоре блайнды и таймер. Вылеты и пересадки ведущий отмечает с телефона у стола.
  5. Шаг 5.ВедущийКассаВидно, кто сколько заплатил и кто должен. Долг не потеряется до следующей игры.
  6. Шаг 6.ВсеИтогиМеста, очки и рейтинг считаются сами. Таблица сезона и отчёт с фото — на сайте клуба.

Ключевые решения

01

Ведущему — не больше трёх нажатий

Отметить игрока, продать реэнтри, оформить вылет — каждое частое действие укладывается в три нажатия. Вылет подтверждается свайпом, чтобы не нажать его случайно.

Компромисс: на телефоне только короткие сценарии. Касса, лиги и завершение игры остаются на компьютере.

02

Плохой интернет не ломает вечер

Если в зале пропала сеть, телефон ведущего запоминает вылеты и пересадки и отправит их, когда связь вернётся. Повторное нажатие не создаст второй вылет.

Компромисс: без сети часы не запустить и не поставить на паузу. Время игры идёт по серверу, иначе экраны разойдутся.

03

Таймер нельзя сбить

Уровень блайндов не тикает в браузере, а вычисляется из времени старта и пауз. Перезагрузили ноутбук или сел телефон — телевизор покажет то же время.

Компромисс: вручную перескочить уровень или поправить блайнды посреди игры нельзя. В первой версии это убрано сознательно.

04

Историю нельзя тихо переписать

Цены, правила сезона и бонусы запоминаются в момент игры. Исправить результат можно только корректировкой с причиной, и она останется в журнале.

Компромисс: «просто поправить цифру» не выйдет — на каждую правку нужно пару кликов и объяснение.

Цифры

работы — от пустого репозитория до живого демо
4 дня
на 36 000 запросах к афише и таблицам — по 200 в секунду
0 ошибок
за столько сервер ответил на 95% этих запросов
до 42 мс
действий ведущего дошли до 70 экранов, подключённых одновременно
36 из 36

*Для тестирования был выделен сервер 2 ядра и 1 ГБ памяти. Совершено 2 прогона по 90 секунд, указано худшее значение.

Стек

  • Java 21
  • Spring Boot
  • PostgreSQL
  • Next.js
  • TypeScript
  • PWA
  • Docker
  • Playwright
  • k6

Нужно такое для своего клуба?

Расскажите, как у вас проходит вечер — покер, мафия, настолки или квизы. Скажу, что из этого подойдёт, сколько займёт и сколько будет стоить.

Обсудить задачу