[K] Кейс
Система управления лигой: CRM, личные кабинеты игроков и публичный сайт.
Построили систему заново и перенесли в неё всю историю лиги. Сезон 2025–2026 лига провела полностью в новой системе.
| Заказчик | Enlighted · агентство |
|---|---|
| Бренд | Офицерская Хоккейная Лига |
| Направление | Веб-сервисы и системы |
| Что делали | CRM, UI/UX-дизайн, сайт |
| Стек | React, Next.js, Node.js, NestJS, MongoDB, Redis |
| Годы | 2025–2026 |
| Сайт проекта | ohliga.ru |

У лиги уже были своя система и сайт: новости, календарь, статистика, ведение матчей. Но интерфейс был неудобным, функций не хватало, а история лиги хранилась в самописной базе без единого формата. Систему нужно было построить заново и не потерять при переезде ни одного игрока, команды и матча.
Собрали с нуля три связанные части: CRM для управления лигой, личные кабинеты игроков и публичный сайт. Начали с прототипа, чтобы выверить логику до разработки. Дальше проектирование, дизайн и разработка шли параллельно. Всю историю лиги перенесли в новую базу.
Система отработала полный сезон 2025–2026: от первого тура регулярного чемпионата до финалов плей-офф. По словам лиги, теперь всё в одном месте, интерфейс удобный, а вести лигу стало комфортно.
С 2018 года лига выросла в сеть по всей стране. Статистика каждого игрока и команды должна сходиться до последнего гола.
12
регионов — от Санкт-Петербурга до Хабаровска
250+
команд
7500+
участников
все сезоны
история сыгранных матчей в одной базе
Каждый матч лиги проходит через одну и ту же цепочку: секретарь вносит протокол, система пересчитывает статистику игроков и команд, а сайт показывает результат болельщикам. Раньше эти шаги жили в разных местах, и данные расходились. Теперь у каждого игрока один профиль на все команды и сезоны, а у каждого матча — одна запись, из которой собираются протокол, таблица и страница на сайте.
Второй абзац нужен, чтобы увидеть ритм между абзацами. Представители команд подают заявки через систему, модератор проверяет их и подтверждает состав. Судья добавляет замечания прямо в карточку матча. Если команда подаёт протест, он тоже хранится рядом с матчем, и история решения не теряется.
04.1
В старой базе данные хранились без единого формата, с дублями. У игроков не было сквозного ID: один человек играл в разных командах, и в каждой его записывали по-своему, с опечатками. Базу собирали скриптами нормализации и вручную.
04.2
Протокол матча — это десятки условий: две результативные передачи, игровые ситуации (большинство, меньшинство, пустые ворота, буллит), коды нарушений, время игры вратарей. Всё это должно сходиться в статистике. Проверяли систему сами игроки — к своим цифрам они относятся очень внимательно.

[06]
Админка, в которой лига работает каждый день. Почти ничего не зашито в код: регламент лиги настраивается.

[07]
Самая насыщенная часть системы — карточка матча. У матча три стадии: запланирован, идёт, завершён.

[08]
В Северной Америке хоккейный протокол давно ведут в цифре. Профессиональные лиги AHL, ECHL и CHL считают матчи в LeagueStat от HockeyTech, а тысячи любительских лиг заполняют протокол в приложении GameSheet вместо бумажного бланка. Вывод у всех один: протокол, внесённый один раз, сразу становится официальным документом, статистикой и страницей на сайте. Мы построили систему ОХЛ на том же принципе, но под регламент лиги.
[09]
Для плей-офф сделали конструктор турнирной сетки. Администратор задаёт стадии от 1/8 до финала, группы и матч за третье место, заполняет пары и результаты серий. Сетка на сайте строится из этих данных автоматически. Статистика тоже считается автоматически и сразу попадает на публичный сайт.

[10]
Игрок входит по своему логину. В кабинете — профиль с рейтингом, биография, переключение между командами и личная статистика в каждой из них.

[11]
Сайт работает на тех же данных, что и CRM. Главная страница своя у каждого региона: результаты, новости, лидеры сезона, представители. Ещё на сайте есть календарь с фильтрами, страница матча с текстовой трансляцией, каталоги команд и игроков, медиагалереи.

Бриф заполнять не нужно. Оставьте контакт и пару слов о задаче — менеджер свяжется в течение дня и сам задаст вопросы.