Ludio
«Cupcake Dev действительно заботилась о продукте и их работе! Они проактивно давали предложения о том, как реализовать функции, которые нам нужны, часто приходя
Дата

«Cupcake Dev действительно заботилась о продукте и их работе! Они проактивно давали предложения о том, как реализовать функции, которые нам нужны, часто придумывая лучшие идеи или лучшие варианты той же идеи. Отличное общение, своевременная работа, и мы очень довольны тем, как вышел наш продукт!» - Анкит Буддираджу, соучредитель и генеральный директор.
Платформа для видеозвонков на основе настоящих социальных и настольных игр

Задача
Четыре года назад Анкит и его партнер подошли к нам с прототипом. Была идея: Мафия как игра для видеозвонков. Тонна интересных игровых фич. Но интерфейс выглядел как его писали программисты — неприглядно и неудобно для пользователя.
Вначале мы просто добавляли новые функции и чинили баги. Не было дорожной карты, не было стратегии. Просто: «Завтра может быть конец света, давайте добавлять фичи как можно быстрее!» Без внимания к дизайну и архитектуре.
Итог: прототип вырос в монстра. Настолько огромный, что добавить что-то новое стало почти невозможно. Кодовая база была настолько запутанной, что любой новый сдвиг мог сломать что-то старое.
Потом произошел переосмысл: давайте построим настоящий продукт. С нуля. С профессиональным дизайном, нормальной архитектурой. Три разработчика, целый год работы. Результат — продукт, за который мы действительно гордимся!

Основные проблемы
1. Никакой архитектуры
В первоначальном приложении (прототипе) бизнес-логика была хаотично разбросана между бэкенда и фронтенда. Не было единого источника истины о состоянии игры. Это привело к частым ошибкам и сделало поддержку кода адом. Для V1 нужно было это полностью исправить.
2. Только одна игра за раз
Прототип был специфичен для Мафии. Для V1 клиент хотел платформу для разных типов социальных и настольных игр. Это означало драматическое увеличение уровня абстракции в коде.
3. Масштабируемость
Прототип мог запускать только одну игру на одном экземпляре за раз. V1 должен был легко масштабироваться и запускать много разных игр параллельно.
4. Управление контентом
Было слишком много типов игр и вариаций, чтобы полагаться на разработчиков для каждого малейшего изменения. Нужна была возможность создавать и редактировать игры прямо на стороне клиента через админ-панель.

Как мы переделали
Мы решили переписать V1 полностью с нуля. Но на основе глубокого понимания всей функциональности. Это позволило нам спроектировать правильную архитектуру и реализацию UX.
Новая архитектура была сосредоточена на одном принципе: единый источник истины о состоянии игры на бэкенде. Это позволило нам реализовать очень сложную бизнес-логику, улучшить качество кода и начать разработку новых фич без страха что-то сломать.
Чтобы поддерживать несколько типов игр в одном приложении, мы разделили логику на три уровня:
- Базовый уровень — атомная функциональность (игроки, сессии, основные правила)
- Уровень типа игры — логика, специфичная для каждого типа (Мафия, Uno, etc.)
- Уровень конфиги — детальная настройка каждой игры (сколько игроков, длительность, правила)
Таким образом, мы создали платформу для конструирования разных видов социальных игр.
Чтобы несколько игр могли работать одновременно, мы сделали так, чтобы каждая игра запускалась в отдельном экземпляре. Это изолирует игры друг от друга. Результат: множество групп игроков могут играть одновременно без конфликтов.
По запросу клиента мы создали редактор игр. Теперь администратор может создавать столько игр с разной логикой, сколько нужно, в любое время. Не нужно засыпать разработчиков тикетами для каждого малейшего изменения.
Результаты
Сейчас продукт выходит на рынок. Клиент активно собирает фидбэк пользователей. Благодаря гибкой архитектуре большинство запросов быстро внедряются. Клиент и пользователи в восторге от результатов!
Технологии: React.js, Node.js, Redux, Redux Saga, Nest.js, Jitsi, Daily, Linaria, PostgreSQL, переписанный Webext Redux, TypeScript, Webpack, Prettier и ESLint.


