Маркетплейс локальных услуг по вызову, спасённый под NDA
Этот агрегатор связывает людей, которым быстро нужна услуга рядом с домом, с исполнителями поблизости. Клиент оставляет заявку, платформа подбирает для неё ближайших исполнителей, а работа бронируется и оплачивается онлайн. Мы подключились, когда проект сильно отставал от графика. Клиент под NDA, поэтому в этом кейсе описаны ситуация, принятые решения и то, что было запущено, — без названий.
Ситуация: работы на восемь месяцев, запаса — на один
Честная оценка оставшейся работы — около восьми месяцев. У бизнеса был примерно один, и каждый лишний месяц стоил денег и терпения инвесторов. Вариантов было два. Команда могла построить всё по плану и рискнуть тем, что компания не доживёт до запуска, или вовремя выпустить то, что нужно для запуска. Мы сознательно выбрали второй вариант — как инженерное решение.
Как мы выпустили MVP примерно за месяц
1. Жёсткая техническая сортировка
Мы начали с аудита существующей кодовой базы: что работает, что можно спасти, а что быстрее переписать. Часть унаследованного кода работала на устаревшем PHP 5.6. Мы не стали переписывать всё подряд. Вместо этого мы точно определили, что должно измениться до запуска, а работающие старые части не трогали до того момента, как продукт выйдет.
2. Беспощадная расстановка приоритетов
Самое важное решение оказалось и самым непопулярным: урезать объём до того, что действительно нужно для первого запуска. Всё остальное ушло в бэклог после релиза. Осталось ядро маркетплейса услуг — сценарии, без которых ни один клиент не смог бы получить выполненную работу.
3. Параллельная работа над изолированными модулями
Даже урезанный объём был слишком велик для одного человека за месяц. Мы разделили систему на чётко изолированные модули и распараллелили работу между шестью full-stack-разработчиками, чтобы никто никого не ждал. Задача тимлида была не в том, чтобы написать больше всех кода, а в том, чтобы держать критический путь: разблокировать разработчиков, интегрировать модули, следить, чтобы части сходились, и не подпускать к команде расползание объёма работ.
Ключевые функции на момент запуска
- Подбор исполнителей по геолокации: построен на API Яндекс Карт, поэтому заявка доходит до исполнителей, которые действительно рядом.
- Бронирование и онлайн-оплата: клиенты бронируют исполнителя и платят через интеграцию с онлайн-платежами.
- Подключение исполнителей: исполнители подключаются через админ-панель.
- Разбор споров: инструменты для разрешения споров между клиентами и исполнителями.
- Вебхуки жизненного цикла заявки: по мере того как заявка проходит свой жизненный цикл, срабатывают события, которые питают интеграции и уведомления.
Архитектура и технологический стек
Бэкенд работает на Laravel 8 с MariaDB, рядом с легаси-кодом на PHP 5.6, который мы решили сохранить до запуска. Фронтенд — Vue.js 2, собранный через Laravel Mix. Логика местоположения для подбора работает на API Яндекс Карт.
Вебхуки жизненного цикла выносят побочные эффекты, например уведомления, из основного кода бронирования. Маркетплейс генерирует событие при каждом изменении статуса заявки, а всё, что должно на это реагировать, на событие подписывается. Эта граница сделала возможной и параллельную работу: коду, который реагирует на заявку, не нужно менять код, который ей управляет.
Результат
MVP вышел примерно за месяц вместо восьми, и подбор, бронирование, платежи, подключение исполнителей и споры работали. Когда основные сценарии были на месте, клиент смог вернуться к привлечению пользователей и подключению исполнителей.
Что показывает этот проект
- Срок — часть продукта. Готовый продукт, который появился после того, как у бизнеса кончились деньги, никому не поможет.
- Отказ от лишнего экономит больше времени, чем переработки. Урезанные функции сделали для графика больше, чем могли бы сделать любые дополнительные часы.
- Параллельным командам нужна архитектура. Шесть разработчиков ускоряют работу, только когда модули не дают им сталкиваться.
Смежные работы
Спасение проектов, которые застряли и отстают от графика, — часть нашей услуги разработки веб-приложений. Маркетплейсы, которые мы построили как собственные продукты, — это Bronjoy, маркетплейс онлайн-записи, и Bazarmap, многосторонний маркетплейс с отдельными приложениями для покупателей, продавцов и менеджеров.



