все проекты / кейс 02

PandaSale Мероприятия — платформа турниров и игротек

клиент
events.pandasale.ru, собственный продукт
платформа
Next.js 14 + PostgreSQL
роль
продукт целиком: архитектура, разработка, деплой
срок
весна 2026 — сейчас, развитие продолжается

Задача

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

Решение

SaaS-платформа: календарь мероприятий, конструктор регистрационных форм, ELO-рейтинг с автоматическим начислением при завершении турнира и честным пересчётом при правке результатов задним числом, судейский интерфейс с таймером раундов, вход по magic-link и через VK, синхронизация каталога игр с МойСклад, медиа в Object Storage за CDN. Строгая типизация без any, валидация всех входов через Zod, unit-тесты на Vitest.

Результат

MVP работает на events.pandasale.ru: мероприятия, календарь, рейтинг, аренда игр и столов. Архитектура зафиксирована под рост до федеральной платформы для магазинов, клубов и организаторов.

// до → после

функциональность с MVPформа регистрации + админкатурниры, ELO, судейский интерфейс
схема данных68 таблиц108 таблиц

Как мы это делали

Продукт вырос из простой задачи «записать людей на игротеку» и за несколько итераций стал платформой. Схема данных выросла с 68 до 108 таблиц — каждая новая возможность добавлялась поверх работающего сервиса, без остановок и переписываний с нуля.

Из чего он состоит

  • Календарь мероприятий — расписание игротек и турниров, страница события с описанием, правилами и призами.
  • Конструктор форм регистрации — организатор сам задаёт поля, которые нужны на конкретное мероприятие.
  • ELO-рейтинг — очки начисляются автоматически при закрытии турнира и честно пересчитываются, если результат правят задним числом.
  • Судейский интерфейс — таймер раундов, ввод результатов, разбивка по столам.
  • Вход без пароля — magic-link на почту и авторизация через VK.
  • Аренда игр и столов — бронирование на конкретное время.
  • Синхронизация каталога игр с МойСклад — библиотека клуба и товары магазина не расходятся.

Строгая типизация без `any`, валидация всех входов через Zod, unit-тесты на Vitest — платформа рассчитана на рост, а не на демонстрацию.