Онлайн-платформа для турнира за 29 дней: кейс без сбоев

Как организатор корпоративного турнира по паделу запустил онлайн-табло и систему жеребьёвки за неполный месяц
Клиент
Крупный корпоративный заказчик из Москвы — организация, которая занимается поддержкой экспортно ориентированных компаний и проводит деловые и спортивные мероприятия для бизнес-сообщества.
Масштаб: сотни участников и зрителей на площадке, несколько параллельных кортов, десятки матчей в один день.
Названия компаний и имена не раскрываются по условиям NDA.
Проблема
До нас заказчик готовил турниры «вручную».
Вот как это выглядело:
- Заявки собирали через почту и мессенджеры, потом вручную сводили в таблицы.
- Жеребьёвку проводили на бумаге, результаты переносили в Excel.
- Расписание матчей по кортам рисовали маркером на флипчарте. Любое изменение — и всё переписывать заново.
- Счёт на табло обновляли голосом или в лучшем случае в чате. Зрители узнавали результат через 10–15 минут после окончания игры.
- В день турнира судьи, оператор, хостес и игроки работали каждый в своём файле. Данные не сходились.
Главная боль: мероприятие на 200+ человек держалось на ручном труде трёх сотрудников. Одна ошибка в расписании — и половина сетки «плыла».
Цель
Заказчик хотел получить единую цифровую платформу, которая закроет весь турнир — от регистрации до финального награждения.
Конкретно:
- Убрать ручной сбор заявок и жеребьёвку.
- Сделать онлайн-табло, которое обновляется в реальном времени.
- Автоматически строить расписание группового этапа и плей-офф.
- Дать судьям и оператору одну админку вместо пяти инструментов.
- Уложиться в срок до дня турнира — меньше месяца.
Решение





Мы начали 17 июля. Турнир — 15 августа. На всё про всё 29 дней.
Вот что сделали по этапам:
Неделя 1 — архитектура и прототип.
Собрали требования с организатором и главным судьёй. Определили роли: участник, судья, оператор, хостес, зритель. Спроектировали схему данных: команды, группы, матчи, корты, раунды. Сразу заложили WebSocket-канал для обновления табло — чтобы не перезагружать страницу.
Неделя 2 — регистрация и жеребьёвка.
Сделали публичную анкету участника. Настроили формирование команд и автоматическую жеребьёвку по группам. Заказчик хотел, чтобы сильные игроки не попали в одну группу — добавили механику посева. Это было нестандартно: обычно жеребьёвка случайная, а тут пришлось учитывать рейтинг.
Неделя 3 — групповой этап и расписание.
Реализовали круговую систему. Алгоритм сам строил расписание: сколько кортов, сколько раундов, кто с кем и во сколько. Если матч затягивался — оператор мог сдвинуть время, и расписание пересчитывалось на лету.
Неделя 4 — плей-офф, табло и админка.
Собрали сетку плей-офф, сводную таблицу уровней с медалями. Сделали админ-панель для ввода результатов. Судья вводит счёт — табло у всех зрителей обновляется за секунду. Плюс автоматическая подстраховка: если WebSocket отвалился, данные подтягиваются через резервный канал.
Что было нестандартного:
- Платформа работала не только на зрителей, но и на внутренние роли. Судья, оператор, хостес и игроки — все в одной системе.
- Расписание матчей перестраивалось в реальном времени. В день турнира это спасло: два матча затянулись, и оператор перекинул игры на свободный корт без переписывания сетки.
- Нагрузку в сотни одновременных зрителей выдержали за счёт кэширования и лёгкого фронтенда.
Результат
Вот что получилось наглядно:
- Сбор заявок.
- Было: почта и мессенджеры, ручная сводка.
- Стало: онлайн-анкета, данные сразу попадают в систему.
- Жеребьёвка.
- Было: бумага и Excel, 2–3 часа.
- Стало: автоматически, 15 минут с учётом посева.
- Расписание матчей.
- Было: флипчарт, ручное.
- Стало: автоматическое, пересчёт на лету.
- Обновление табло.
- Было: 10–15 минут, голосом.
- Стало: 1 секунда, у всех зрителей.
- Роли в день турнира.
- Было: 5 разных файлов.
- Стало: 1 админка для судей, оператора и хостес.
- Срок запуска.
- Было: —.
- Стало: 29 дней от старта до боевого турнира.
Турнир прошёл. Платформа отработала под реальной нагрузкой. В день соревнований ей одновременно пользовались судьи, оператор, хостес и сами игроки. Команда была на связи и решала запросы прямо во время события.
Цитата клиента
«Это получилась система, которой пользовались и судьи, и оператор, и хостес, и игроки. Мощная штука, и она выдержала. Отдельное спасибо, что были на связи и оперативно решали наши запросы».


