all projects / case study 02
PandaSale Events — tournaments and game nights platform

Problem
The board game store and its community of players needed one venue: a schedule of game nights and tournaments, online registration with confirmed attendance, tournament results and player ratings — all in the same place.
Solution
A SaaS platform: an events calendar, a builder for registration forms, ELO ratings awarded automatically when a tournament closes and recalculated fairly when results are edited after the fact, a referee interface with a round timer, sign-in by magic link and via VK, game catalog sync with MoySklad, media in Object Storage behind a CDN. Strict typing with no any, every input validated through Zod, unit tests on Vitest.
Outcome
The MVP runs at events.pandasale.ru: events, calendar, ratings, game and table rentals. The architecture is set up to grow into a nationwide platform for stores, clubs and organizers.
// before → after
Как мы это делали
Продукт вырос из простой задачи «записать людей на игротеку» и за несколько итераций стал платформой. Схема данных выросла с 68 до 108 таблиц — каждая новая возможность добавлялась поверх работающего сервиса, без остановок и переписываний с нуля.
Из чего он состоит
- Календарь мероприятий — расписание игротек и турниров, страница события с описанием, правилами и призами.
- Конструктор форм регистрации — организатор сам задаёт поля, которые нужны на конкретное мероприятие.
- ELO-рейтинг — очки начисляются автоматически при закрытии турнира и честно пересчитываются, если результат правят задним числом.
- Судейский интерфейс — таймер раундов, ввод результатов, разбивка по столам.
- Вход без пароля — magic-link на почту и авторизация через VK.
- Аренда игр и столов — бронирование на конкретное время.
- Синхронизация каталога игр с МойСклад — библиотека клуба и товары магазина не расходятся.
Строгая типизация без `any`, валидация всех входов через Zod, unit-тесты на Vitest — платформа рассчитана на рост, а не на демонстрацию.