← все кейсы · Авто-Таксист

Свой таксопарк без агрегатора — четыре системы.

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

4 системы · real-time стек · Flutter + Node + React в проде, 1000+ пользователей

01 · Контекст и задача

Таксопарк в небольшом городе работал по старинке: диспетчер принимает звонки, водители на рации, учёт в тетради. Агрегаторы заходят в регион и забирают до трети заработка комиссией. Владелец хотел своё — систему, которая делает всё то же, что агрегатор, но принадлежит парку.

Задача: полноценный таксосервис из четырёх частей. Пассажир заказывает поездку в приложении. Водитель принимает заказы и видит карту. Оператор управляет линией вручную, когда нужно. Владелец видит метрики, водителей, заказы и финансы. И всё это работает в реальном времени.

02 · Что было сложно

  • Real-time на всех ролях сразу. Координаты водителей, появление заказа, его принятие, отказ, статус поездки — всё должно обновляться вживую у пассажира, водителя, оператора и в админке одновременно. Это построено на Socket.IO: одно событие расходится по всем подключённым ролям.
  • Распределение заказов между водителями. Заказ нужно предложить подходящим водителям (по зоне подачи, тарифу, статусу), дать время принять, и если отказались — передать дальше. Система ведёт список отказавшихся, чтобы не предлагать заказ повторно. Это отдельный сервис распределения, а не просто «push всем».
  • Тарифы и зоны. Стандарт и грузовое — разные цены и подсветка. Стоимость считается по адресу подачи и зоне города, а не по прямой линии. Грузовой заказ на 1080 ₽ и стандартный на 220 ₽ в одном списке должны визуально различаться, чтобы водитель не путался.
  • Честные статусы. «Водитель онлайн» должно означать, что он реально на линии сейчас, а не «заходил два часа назад». Протухшие статусы — частая болячка таких систем. Сделали так, что статус отражает текущее состояние, а не последний known.
  • Оператор как страховка. Не всё решает автоматика: бывает звонок от пожилого пассажира или сложный адрес. Оператор должен уметь создать заказ вручную, назначить водителя, поправить или отменить — поверх той же real-time системы.

Главное было не «сделать ещё один Uber», а собрать систему, которой парк сам управляет и в которой сам устанавливает правила — без чужой комиссии.

03 · Четыре системы

Приложение пассажира

Вход по номеру телефона (SMS), создание заказа с выбором точек на карте и расчётом стоимости до поездки, отслеживание машины в реальном времени. Простой интерфейс — заказать такси в три тапа.

Приложение водителя

Выход на линию одной кнопкой, лента доступных заказов с тарифом и ценой в каждой карточке, карта с пинами заказов, закрепление заказа за собой, экран заработка. Стандартные и грузовые заказы подсвечены по-разному. Автоназначение можно включить или принимать заказы вручную.

Лента заказов водителя: стандарт и грузовой тариф с разной подсветкой
Лента заказов водителя: тариф и цена в каждой карточке — стандарт (оранжевый, 220 ₽) и грузовой (красный, 1080 ₽) визуально различаются

Операторская панель

Живая карта водителей и заказов, ручное создание и назначение. Оператор видит, кто на линии, какие заказы активны, может вмешаться: создать заказ за пассажира по звонку, назначить водителя, отменить. Статус заказа показывает его текущий этап.

Операторская сводка: водители на линии, активные заказы
Операторская: онлайн-водители, свободные, открытые заказы и предзаказы — живая сводка с возможностью вмешаться в любой заказ

Админ-панель

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

Дашборд админки: 1014 пользователей, 102 водителя, выручка
Дашборд владельца: 1014 пользователей, 102 одобренных водителя, заказы за день/неделю/месяц, выручка — вся сеть в одной сводке

04 · Результат

Системы 4в одном проекте
Пользователи 1000+в проде
Водители 100+подключено к парку
Заказы 4800+обработано системой

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

Вся комиссия остаётся в парке — нет внешнего агрегатора, который забирает процент. Парк сам устанавливает тарифы, зоны и правила распределения.

05 · Что дальше

Система развивается: новые тарифы, доработка распределения заказов, аналитика эффективности водителей, улучшение карт. Архитектура из четырёх связанных через Socket.IO систем позволяет добавлять роли и сценарии, не ломая существующее.

Бэкенд (Node.js + MongoDB + Redis) и админка (React) развёрнуты в Docker, мобильные приложения собираются под iOS и Android из общей Flutter-кодовой базы. Новый функционал выкатывается на сервер, мобильные обновления — через сторы.

Похожий проект

У вас тоже несколько ролей и нужна real-time система?

Сервисы, где пассажир, исполнитель, оператор и владелец работают в одной системе с обновлением вживую — наш профиль. В первом письме приложите ссылку на этот кейс и опишите свою задачу — пришлём разбор с архитектурой и сметой в течение 24 часов.