Один backend, два продукта, два рынка. B2B-платформа для управляющих компаний и публичный маркетплейс мастеров.
Клиент пришёл с формулировкой «сделай нам Авито Услуги, только для строителей в Казахстане». На первой discovery-сессии выяснилось, что за этим запросом скрываются две разные аудитории с принципиально разными потребностями.
Частные заказчики хотят найти мастера, посмотреть примеры работ, быстро договориться и заплатить. Управляющие компании и девелоперы хотят совсем другого: управлять пулом подрядчиков, выдавать задания централизованно, контролировать выполнение, получать финансовую отчётность.
Объединить эти два сценария в одном интерфейсе — значит испортить оба. Разделить на два продукта — значит удвоить backend-затраты и получить две несинхронизированные базы подрядчиков. Решение: два разных фронтенда на единой backend-платформе. Одна команда, один NestJS-монолит с модульной структурой, один PostgreSQL-кластер.
Платформа для управления пулом подрядчиков: тендеры, назначение задач, контроль выполнения, KPI, финансовая отчётность. Всё что нужно прорабу и финансовому директору — в одном интерфейсе.
Потребительский маркетплейс для поиска мастеров по дому: плавные анимации, видео-оценка работ, мгновенная оплата. Офлайн-режим для просмотра сохранённых мастеров.
Мастер регистрируется один раз и попадает в обе системы. Верификация документов, портфолио, рейтинг — всё хранится в одном месте. Обновление данных синхронизируется мгновенно.
Отзывы и оценки из Usta Market автоматически учитываются при ранжировании в Usta Pro. Недобросовестный подрядчик не может просто уйти на другую платформу.
Единый платёжный модуль: для B2C — оплата через приложение, для B2B — безналичный расчёт с актами. Общий кошелёк мастера, единая история транзакций.
Firebase Cloud Messaging для обеих мобильных платформ. Один сервис уведомлений — разные шаблоны для B2C и B2B контекстов.
Начали с архитектуры, проектирования базы данных и дизайн-системы. Это казалось медленным стартом, но заложило основу, которую не пришлось переделывать.
NestJS-монолит с модульной структурой: отдельные модули для пользователей, подрядчиков, задач, платежей, уведомлений. Между модулями — жёсткие границы через сервисный слой. Благодаря этому Usta Market и Usta Pro используют одни и те же сервисы, но получают разные ответы через разные контроллеры с разной авторизацией.
PostgreSQL с разделением схем: `b2c`, `b2b`, `shared`. Это позволяет делать JOIN между таблицами в одном запросе, не поднимая два отдельных сервера.
Дизайн-система, схема БД, модульная архитектура NestJS, CI/CD пайплайн. Всё, что нельзя переделать на полпути.
Дашборд управляющей компании, каталог подрядчиков, тендерная система, управление задачами.
React Native приложение для прорабов (Usta Pro) и основной флоу Usta Market: поиск, карточка мастера, бронирование.
Платёжный шлюз, Firebase push, нагрузочное тестирование, онбординг первых мастеров, публичный запуск.
Строите экосистему из нескольких продуктов?