Разработка мобильного приложения для службы клининга
Клининговый сервис — это классический service marketplace: клиент хочет уборку в конкретное время, исполнитель должен получить задание с адресом и инструкциями, диспетчер должен видеть, кто где и всё ли идёт по плану. Три интерфейса, одна логика назначения и трекинга.
Архитектура: три приложения или одно
Для клинингового бизнеса оптимально — одно Flutter-приложение с тремя ролями: клиент, исполнитель, администратор. Роль определяется при авторизации, интерфейс меняется полностью. Это дешевле в поддержке, чем три отдельных приложения, при том что UI-требования у ролей существенно различаются.
Клиент: выбрать тип уборки (стандартная, генеральная, после ремонта, окна), указать площадь, выбрать слот, добавить инструкции и фото проблемных мест, оплатить. Статус уборки и трекинг исполнителя.
Исполнитель: расписание на неделю, детали текущего задания с адресом и чек-листом, навигация, фотоотчёт после уборки, статусы прибытия/начала/завершения.
Администратор: назначение исполнителей на заявки, карта с текущими уборками, статистика, управление каталогом услуг.
Динамическая цена и онлайн-расчёт
Стоимость уборки — функция от нескольких переменных: тип уборки, площадь, дополнительные услуги (чистка духовки, холодильника, наличие животных), срочность. Форма заказа показывает итоговую сумму в реальном времени при изменении параметров.
На бэкенде — таблица тарификации с базовыми ставками и коэффициентами. Администратор меняет цены в панели, формула пересчитывается автоматически. Никакого хардкода цен в приложении.
Назначение исполнителей
Два режима:
Автоматическое назначение: алгоритм ищет доступного исполнителя в зоне доставки на нужный слот (PostGIS, геозоны исполнителей), с рейтингом выше порогового значения, без конфликтов по расписанию. Назначает → пуш исполнителю → принять или отклонить.
Ручное назначение: диспетчер видит список доступных исполнителей на нужный слот и назначает вручную. Для нестандартных ситуаций.
Рейтинг исполнителя — средняя оценка от клиентов за последние N уборок, с учётом своевременности (опоздание > 30 минут — автоматический штраф к рейтингу).
Фотоотчёт и приёмка работы
Исполнитель делает фото до уборки и после — через камеру прямо в приложении, фото прикрепляются к заданию с timestamp и GPS-меткой. Клиент видит фотоотчёт в приложении и подтверждает выполнение работы или оставляет претензию.
Это снижает количество споров: есть документальное подтверждение состояния объекта до и после.
Рекуррентные заказы
«Уборка каждые 2 недели по пятницам» — рекуррентное задание, которое автоматически создаёт новые заявки по расписанию. Оплата — списание с привязанной карты через ЮКасса recurring или ручная оплата каждый раз. Уведомление за 2 дня до уборки с возможностью перенести или пропустить.
Стек: Flutter 3.x + Bloc, Laravel 10 + PostgreSQL + PostGIS, FCM, ЮКасса (в том числе recurring), S3 для фотоотчётов, Yandex MapKit для карты и навигации.
Сроки
MVP (клиентское + исполнительское приложение, назначение, трекинг, оплата) — от 14 до 18 недель. С рекуррентными заказами, автоназначением и расширенной аналитикой — от 22 недель.
Стоимость рассчитывается индивидуально после анализа требований.







