← Все работы

Логистическая платформа · 2026

ALIGO

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

Ссылки скоро

Инженерный обзор

  • ~21k Строк кода
  • 54 Эндпоинтов API
  • 275 Автотестов
  • 24 Экранов в приложении
  • 23 Модулей backend
  • 3 Клиентские платформы

Технологии

Mobile
  • Flutter
  • Dart
  • Material 3
  • Light / Dark theme
  • mapbox_maps_flutter
  • geolocator
  • socket_io_client
  • firebase_messaging
  • google_sign_in
  • flutter_secure_storage
  • fl_chart
  • intl / l10n
Backend
  • Node.js
  • Express 5
  • Socket.IO
  • PostgreSQL
  • SQLite (local)
  • JWT
  • bcrypt
  • firebase-admin
  • Telegraf
  • Anthropic Claude SDK
  • Mapbox Directions API
  • express-rate-limit
  • node:test
Infrastructure
  • Docker
  • Docker Compose
  • nginx
  • Let's Encrypt / certbot
  • PostgreSQL 16
  • Render

Задача

В Узбекистане грузовладельцы и водители до сих пор находят друг друга через разрозненные каналы — звонки, Telegram-группы, личные связи.

Из-за этого цена непрозрачна, статус груза не виден, подходящего водителя трудно найти, а обратные рейсы часто идут порожняком. Нет общего процесса и нет репутации, которая переносилась бы между сторонами.

Обеим сторонам нужна одна общая система.

Решение

ALIGO объединяет грузовладельцев, водителей и бизнес в единой логистической экосистеме.

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

Сверх этого: отслеживание в реальном времени, автоматический расчёт цены, детерминированный подбор водителей, уведомления, интеграция с Telegram и AI-чат поддержки. Мобильное приложение, Telegram-бот, Telegram Mini App и админ-панель работают через один Node.js API.

Моя роль

Я построил ALIGO в одиночку — от архитектуры до продакшена.

Это включало проектирование системы и базы данных, backend и REST API, real-time слой на Socket.IO, аутентификацию и авторизацию, а также полное мобильное приложение на Flutter — 24 экрана и 41 переиспользуемый виджет, на трёх языках (~393 ключа локализации).

Также — доменную логику: жизненный цикл груза, алгоритм подбора auto-dispatch, движок ценообразования, систему уведомлений, Telegram-бот и Mini App, AI-чат поддержки и админ-панель — плюс деплой в Docker, настройку nginx и продакшен-конфигурацию PostgreSQL.

Архитектура

Backend — монолит на Express 5, организованный в сервисы — 23 сервиса над 10 моделями данных, доступные через 54 REST-эндпоинта в 8 роутерах, рядом с ними аутентификация и real-time слой.

Слой данных работает на PostgreSQL в продакшене и на SQLite локально — приложение переключается автоматически в зависимости от того, задан ли DATABASE_URL, так что логика приложения не зависит от среды базы данных.

Клиенты — приложение на Flutter, Telegram-бот и Mini App, админ-панель — общаются с одним API по REST и Socket.IO.

  1. Клиенты
    Flutter mobileTelegram-бот · Mini AppАдмин-панель
  2. Транспорт
    REST APISocket.IO
  3. Приложение
    Node.js · Express 5
  4. Домен
    СервисыAuthReal-time
  5. Данные
    PostgreSQL — продакшенSQLite — локально
Внешние интеграции
Firebase Cloud MessagingTelegramMapbox DirectionsClaude API
Auto-dispatch

Детерминированный подбор водителей

Когда груз опубликован, ALIGO подбирает водителей через систему подсчёта баллов на правилах — не машинное обучение. Сначала работают жёсткие фильтры (соответствие транспорта, доступность, ограничения по расстоянию); оставшиеся водители получают баллы, а предложения уходят раундами с истечением по TTL, которыми управляет внутренний планировщик.

Балл складывается из семи факторов:

  1. 01 Расстояние
  2. 02 Цена
  3. 03 Рейтинг водителя
  4. 04 История принятия
  5. 05 Любимый маршрут
  6. 06 Срочность дедлайна
  7. 07 Совместимость обратного рейса

Алгоритм детерминированный, объяснимый и тестируемый. AI не участвует в выборе водителей.

Real-time слой

Изолированное отслеживание на Socket.IO

Живое местоположение и обновления статуса отправки идут через real-time слой на Socket.IO. У каждой отправки своя комната, и пользователь может войти только в комнату отправки, где он грузовладелец или назначенный водитель — поэтому данные конкретной отправки не попадают к посторонним.

AI внутри ALIGO

Ассистент поддержки на Claude

В ALIGO есть AI-ассистент поддержки на Claude, отвечающий на узбекском, русском и английском. Если AI API недоступен, система откатывается к заранее заданным ответам.

Это намеренно отделено от auto-dispatch: кто повезёт груз, решают бизнес-правила, AI лишь помогает пользователям. AI применяется там, где он приносит пользу, а не вшит в основную логику.

Инженерные решения

Почему Node.js + Express, а не Django

Python и Django — среди моих основных технологий, но ядро ALIGO — это real-time: непрерывное отслеживание водителей и грузов, живой статус отправки, асинхронные уведомления, интеграции с Telegram и внешними API.

Событийная модель Node.js с асинхронным вводом-выводом — вместе с Socket.IO — естественно подошла для этой нагрузки и сохранила слой интеграций простым и единообразным. Это не утверждение, что Django не может в real-time или что Node универсально лучше; это решение по соответствию задаче.

Принцип Технология должна следовать за задачей — а не наоборот.

Сложности

  1. 01

    Одна кодовая база, две базы данных

    Локальная разработка на SQLite, продакшен на PostgreSQL — и COUNT(), AVG(), числовые типы и форматы дат не всегда ведут себя одинаково. Я нормализую результаты запросов в JavaScript, чтобы остальное приложение видело один согласованный формат.

  2. 02

    Гонки при принятии груза

    Несколько водителей могли одновременно принять один и тот же груз. Принятие — это единственный атомарный UPDATE … WHERE status = 'open', и ручное принятие, и предложения auto-dispatch проходят через одну и ту же логику перехода состояний — поэтому один груз нельзя принять дважды.

  3. 03

    Не дать AI стать ядром

    Подбор водителей намеренно сделан как детерминированные бизнес-правила, а не ML — это делает его предсказуемым, объяснимым и тестируемым. Claude используется для чата поддержки.

  4. 04

    Спящий инстанс Render

    На бесплатном тарифе Render backend может просыпаться около 50 секунд. Восстановление сессии использует повтор с задержкой, поэтому пользователей не выбрасывает на экран входа, пока сервер запускается.

Результат

ALIGO — работающая сквозная логистическая система: мобильное приложение на Flutter, Telegram-бот и Mini App, админ-панель и Node.js / Express API на PostgreSQL.

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

Сквозной процесс
  1. Публикация груза
  2. Поиск
  3. Водитель принимает
  4. Загрузка
  5. Отслеживание в реальном времени
  6. Доставка
  7. Оценка

Интеграции

  • Firebase Cloud Messaging

    Push-уведомления на мобильные устройства.

  • Telegram

    Бот + Mini App — водители могут работать с предложениями прямо в Telegram.

  • Mapbox Directions API

    Расчёт расстояния и маршрута для ценообразования и отслеживания.

  • Claude API

    AI-ассистент поддержки внутри приложения, с откатом на заранее заданные ответы.

Ключевые функции

Аутентификация
  • Телефон + пароль
  • Восстановление через Email OTP
  • Google Sign-In
  • Восстановление сессии
Онбординг
  • Роли Грузовладелец / Водитель
  • Профиль
  • Транспорт и его возможности
Жизненный цикл груза
  • Публикация груза
  • Поиск груза поблизости
  • Фильтр по соответствию транспорта
  • Принятие
  • Загрузка
  • В пути
  • Завершение
  • Оценка
  • Отмена
Ценообразование
  • Цена по категории
  • Расстояние
  • Вес
  • Спецоборудование
  • Расчёт маршрута Mapbox
Дашборд
  • Водители и грузы поблизости
  • Срочные грузы
  • Частые маршруты
  • Тренды цен
  • Месячная статистика
  • Индикаторы подбора
Уведомления
  • FCM push
  • Уведомления в приложении
  • Telegram DM
Платформа
  • AI-чат поддержки
  • Админ-панель
  • Аналитика
  • Блокировка пользователей

Overview

ALIGO is a logistics ecosystem connecting cargo owners, drivers and businesses through one digital platform.

Built with a Flutter mobile application and a Node.js / Express backend, the system combines cargo management, real-time tracking, automatic pricing, deterministic driver matching, notifications, Telegram integration and an AI-powered support assistant — the full cargo lifecycle from publishing to delivery and rating.

Хотите, чтобы вам собрали что-то подобное? Обсудить →