logo
Логотип компании «РОСТерм»

РОСТерм для монтажников

Экраны мобильного приложения «РОСТерм»
Описание
О проекте
РОСТерм производит инженерную сантехнику — трубы, фитинги, краны, радиаторы. Покупают ее не в розницу: подбирают под объект монтажники, сантехники и прорабы. Мы делаем для них мобильное приложение-каталог: специалист находит нужную позицию, собирает список материалов под проект и отправляет заявку напрямую производителю, минуя другие точки продаж. Оплаты в приложении нет — дальше заявку ведет менеджер.
Задача
Дать профессионалам инструмент, которым удобно пользоваться прямо на объекте, и замкнуть заявки на самого производителя. Менеджеру нужна панель, где он ведет каталог, разбирает заявки и начисляет баллы.
Решение
Кроссплатформенное приложение на Flutter для iOS и Android, backend на Go с единым API и отдельная административная панель на React.
Проблемы, с которыми столкнулись
  1. Пользователь работает на стройплощадке — в перчатках, часто одной рукой и при плохой связи. Это не «еще один интернет-магазин»: нужны крупные кнопки, минимум шагов, контрастный интерфейс и кэш, который переживает пропажу сети.
  2. Каталог заказчик ведет в Excel. Вбивать сотни позиций руками в админке неприемлемо трудозатратно.
  3. Привычная механика интернет-магазина не подходит: вместо заказа — заявка со своим жизненным циклом и своим владельцем на стороне заказчика.
  4. Требования приходили итерациями. Программа лояльности за проект переписывалась несколько раз.
Этапы проекта
Требования как отдельный продукт
Два исходных ТЗ — от заказчика и от нашей команды — свели в один консолидированный документ требований. Дальше проект ведется от спецификаций: PRD, реестр фич, feature-спеки, архитектурные решения и development log лежат в отдельном репозитории и считаются единственным источником правды. Перед реализацией любой фичи команда сверяется с ними, а статус каждой фичи заказчик видит на отдельной странице Project Status.
Дизайн

Светлый интерфейс с фирменным красным акцентом: белый фон, крупная типографика, красным — только действия, цены и статусы. Экраны собраны под работу одной рукой: поиск в шапке, крупные плитки категорий, кнопка «В корзину» прямо в списке товаров.

Экран приложения «РОСТерм»
Экран приложения «РОСТерм»
Разработка
Flutter, Go и React
Мобильное приложение — на Flutter, одна кодовая база под iOS и Android. Backend переписали на Go: стандартный net/http, PostgreSQL через pgx с raw SQL без ORM, JWT с refresh-токенами. Контракт зафиксирован в OpenAPI — клиент и сервер собираются от одной спецификации. Административная панель — отдельное приложение на React с TypeScript и Ant Design. HTML-форм на бэкенде нет: все управление живет в панели и ходит в тот же API, что и мобильное приложение.
По итогам этапов мы сделали приложение, где учли:
Вход по звонку

Пароль на стройке никто вспоминать не будет, поэтому вход — по номеру телефона с подтверждением звонком через оператора телефонии. Регистрация завершается профилем: имя, город и согласия.

Экран приложения «РОСТерм»
Экран приложения «РОСТерм»
Главная и каталог

На главной — карусель акций и новинок, карточка активной заявки со статусом и плитки категорий. В каталоге рядом с деревом категорий живут подборки «под проект» — готовые списки материалов под типовую задачу, которые собирает менеджер.

Экран приложения «РОСТерм»
Экран приложения «РОСТерм»
Поиск, фильтры и карточка товара

Поиск работает и по названию, и по артикулу — с первого введенного символа. К нему фильтры по категории и цене и сортировка. В карточке товара — галерея с видео, описание, таблица характеристик, паспорта в PDF и баллы, которые начислятся за покупку.

Экран приложения «РОСТерм»
Экран приложения «РОСТерм»
Корзина и заявка вместо оплаты

Корзина живет на устройстве и переживает перезапуск приложения. При оформлении пользователь выбирает одно из двух — скидку своего уровня или списание баллов, вместе они не применяются. На выходе не оплаченный заказ, а заявка, которую подхватывает менеджер.

Экран приложения «РОСТерм»
Экран приложения «РОСТерм»
Заявки и их статусы

Список заявок с фильтром по статусу и детальный экран: позиции, количество, сумма, примененная скидка, планируемая дата отгрузки и кнопка связи с менеджером. Статус меняет менеджер в админке — пользователю приходит push.

Экран приложения «РОСТерм»
Экран приложения «РОСТерм»
Профиль и программа лояльности

Три уровня — Новичок, Мастер и Титан, у каждого своя скидка и свой процент кешбэка баллами. Баллы становятся активными через 48 часов после покупки, списать можно не больше половины суммы заявки, а за регистрацию начисляются приветственные баллы.

Экран приложения «РОСТерм»
Экран приложения «РОСТерм»
В административной панели мы дали возможность
  • Вести каталог: категории, товары, характеристики, фото, документы и видео
  • Загружать товары из XLSX — с настраиваемым сопоставлением колонок и отчетом об ошибках
  • Разбирать заявки и менять их статусы
  • Управлять программой лояльности: уровни, ручное начисление и списание баллов
  • Вести пользователей, администраторов и журнал действий

Панель — отдельное приложение, а не формы на бэкенде: она ходит в тот же API, что и мобильное приложение, и разворачивается независимо от него.

Тестирование и приемка
Каждая фича сопровождается тест-спекой: сценарии и ожидаемый результат описаны рядом с требованием, а реестр покрытия показывает, что уже проверено. Приемочное тестирование заказчик проходит по этому же реестру, а не по устным договоренностям.
Где проект сейчас
Работы идут итерациями и продолжаются. Уже работают каталог с поиском и фильтрами, подборки под проект, корзина и заявки, вход по звонку, push-уведомления и административная панель с импортом каталога из Excel. В работе — звонки менеджеру прямо из приложения и интеграция каталога с учетной системой заказчика.
Результаты работы
Результат
Заказчик получает мобильное приложение под iOS и Android, backend и административную панель, которые замыкают весь путь — от подбора материала на объекте до заявки напрямую производителю, без посредников. Проект в активной разработке: команда идет итерациями, а прогресс по каждой группе фич заказчик видит на странице Project Status — она собирается из того же реестра требований, по которому работает команда. Технологии: Flutter (iOS и Android), Go и PostgreSQL на бэкенде, React с TypeScript в административной панели, RabbitMQ и отдельный воркер для push-уведомлений, контракт API — OpenAPI.