Кейс 01 из 12 · Веб-приложение
Маркетплейс для строительства
Двусторонняя платформа: заказчик публикует строительный заказ, компании предлагают цену и срок, а сделка идёт по шагам до приёмки работы. Два кабинета, обновления в реальном времени, файлы и уведомления.
- Результат
- Платформа заказов, торгов и приёмки работ
- Срок
- 4 месяца разработки
- Стоимость
- ≈ $26 500
Содержание07
01О проекте
Название заказчика и данные проекта закрыты соглашением о неразглашении, поэтому здесь — только устройство платформы. Публичная демо-версия на тестовых данных собрана из того же кода, что и рабочая система.
02Задача
До платформы заказчик и строительная компания договаривались в переписке и по телефону. Условия сделки терялись в чатах, чертежи и сметы расходились по разным перепискам, а на вопрос «на каком этапе работа» ни у одной стороны не было точного ответа.
Нужна была система, где у сделки есть явные шаги, каждый шаг подтверждают обе стороны и ни один нельзя пропустить.
03Что сделали
- Два кабинета в одном приложении: заказчик ведёт свои заказы, строительная компания видит ленту доступных заказов, свои предложения и сдачу работ.
- Форма заказа с категорией, типом объекта, площадью, адресом, бюджетом, желаемой датой начала и файлами: чертежи и планы прикладываются сразу, чтобы компания считала цену по документам, а не по описанию словами.
- Предложения с ценой и сроком: заказчик видит их рядом и выбирает одно. Цена и срок сделки берутся из принятого предложения, остальные автоматически переходят в «не выбрано».
- Сдача работы файлами с обязательным комментарием, приёмка заказчиком и возврат на доработку с новым кругом сдачи. История всех кругов сохраняется.
- Обновления в реальном времени: действие одной стороны появляется у другой без перезагрузки страницы.
- Уведомления по каждому событию сделки со счётчиком непрочитанных.
- Каталог подрядчиков с числом завершённых заказов и раздел «Документы» со всеми файлами по всем заказам.
- Приватное файловое хранилище: ссылка на скачивание живёт пять минут и выдаётся только тому, у кого есть право на этот файл.
- Тёмная и светлая темы, адаптив от телефона до большого экрана.
04Как устроена сделка
Статус заказа нельзя переставить вручную. Все допустимые переходы описаны одной таблицей, и любое действие вне её отклоняется с понятным объяснением. Статус, предложения и уведомления меняются одной транзакцией, поэтому состояние сделки не может разъехаться между экранами двух сторон.
- Поиск исполнителя — заказ опубликован, предложений пока нет.
- Ожидает подтверждения — пришло хотя бы одно предложение, заказчик выбирает.
- В работе — предложение принято, цена и срок зафиксированы.
- Ожидание подтверждения выполнения — компания сдала работу с файлами и комментарием.
- На доработке — заказчик вернул работу, компания готовит следующий круг сдачи.
- Завершён — заказчик принял работу.
05Что видит посторонняя компания
Приватность здесь не оговорка, а правило, заложенное в саму выдачу данных. Компания, которая не участвует в сделке, видит заказ как «ищет исполнителя», в каком бы состоянии он ни был на самом деле. Ей не видны ни цена сделки, ни чужие предложения, ни контакты заказчика.
Правило действует одинаково в трёх местах: в ответе сервера, в адресации событий реального времени и в доступе к файлам.
06Технологии
Next.js и React на стороне интерфейса, NestJS и PostgreSQL на стороне сервера, весь проект на TypeScript. Обновления в реальном времени идут по WebSocket, авторизация и файловое хранилище — на Supabase.
Общие правила сделки вынесены в отдельный пакет и подключены с обеих сторон, поэтому кнопка на экране и проверка на сервере считаются одной и той же функцией и не могут разойтись.
07Сроки и стоимость
Четыре месяца разработки, после них — приёмочное тестирование на стороне заказчика. Стоимость проекта — около $26 500.
Нужен похожий проект?
Расскажите о задаче — смету и сроки дадим после короткого брифа на 15 минут.