Задача
Футбольным болельщикам нужна игра, в которую можно весь сезон играть с друзьями. Это не должны быть ставки и не должна быть таблица, которую пересылают друг другу по почте. Первую версию TotoCampionato я сделал для сезона Serie A 2006/2007 на классическом ASP, а позже выпустил версию, работавшую внутри Facebook. В 2026 году я переписал её с нуля, чтобы одна платформа могла вести клубные турниры целый сезон, а не только один турнир.
Что я сделал
Игру-прогноз на Node.js: игроки заполняют купон на каждый матч и соревнуются в лигах, которые создают сами.
- 9 купонов на матч: итоговый результат, результат первого тайма, «обе забьют / нет», тотал меньше/больше 2,5, общее число пенальти, тайм/матч, чёт/нечет, точный счёт и общее число голов. Очки начисляются по коэффициентам, поэтому смелый верный прогноз стоит больше очевидного.
- Лиги на любом турнире: сразу доступны 8 турниров, от Serie A и Premier League до Champions League и чемпионата мира 2026 года. Администраторы лиг управляют участниками, призами, баннером, новостной лентой и чатом.
- Фэнтези-режим: фэнтези-команды из реальных игроков и тренеров, правила начисления очков и события матчей задаются в админ-панели. Игроки показаны в виде коллекционных карточек.
- Задания спонсоров: спонсор лиги может ставить задания, участники загружают скриншот как подтверждение, а администратор лиги его проверяет. Так у небольших лиг появляется способ найти призы.
- Автоматический ход матчей: каждую минуту приложение блокирует начавшиеся матчи, каждые 30 секунд получает живые данные из API-Football, а очки считаются без ручного ввода результатов.
- Пять языков: итальянский, английский, французский, немецкий и испанский.
- Админ-панель: пользователи, лиги, коэффициенты, результаты, шаблоны массовых рассылок, почтовый ящик и резервное копирование базы данных и приложения по расписанию.
Технологии
Node.js 20, Express 4, шаблоны EJS, MySQL, Passport со входом через Google, bcrypt, Nodemailer и ImapFlow для почты, Multer для загрузки файлов. Работает на Phusion Passenger на виртуальном хостинге с cPanel, данные о матчах поступают из API-Football.
Почему именно так
Я не стал писать новое приложение, а сделал форк TotoMondiale, моей игры для чемпионата мира: её механизм подсчёта очков, система лиг и админ-панель уже провели целый турнир. Это позволило потратить время на то, что нужно для сезона: несколько турниров одновременно, фэнтези-игру и инструменты для спонсоров.


