О проекте
FURGON — биржа грузоперевозок для Центральной Азии. Грузовладельцы публикуют грузы, перевозчики находят их и откликаются, а перевозка ведётся прямо на площадке: статусы рейса, документы, местоположение машины. Первая страна — Казахстан, следом Узбекистан и Кыргызстан.
Сервер и веб-кабинет уже работают. Нужно сделать два мобильных приложения под Android и iOS на Flutter из общей кодовой базы:
- приложение биржи: для грузовладельца, экспедитора и логиста перевозчика;
- приложение водителя: рейсы, статусы, фото документов, фоновое отслеживание местоположения.
Аккаунт у приложений общий. Дизайн готов, экраны нарисованы.
Формат работы
- Проект с фиксированным объёмом: разработка приложения по готовому дизайну, публикация в магазинах.
- Оплата за проект поэтапно, после приёмки каждого этапа.
- Полностью удалённо.
Технология
Оба приложения делаются на Flutter (Dart) из одной кодовой базы с общими модулями. Фоновое отслеживание местоположения и геозоны требуют нативной части: модулей на Kotlin для Android и на Swift для iOS внутри Flutter-приложения или проверенной библиотеки фоновой геолокации. Какую библиотеку взять и как устроить нативную часть, обсуждаем с вами на старте.
Стек проекта
- Мобильные приложения: Flutter (Dart), нативные модули на Kotlin и Swift
- Сервер: Go, PostgreSQL, Redis, REST API и WebSocket, Nginx
- Веб-кабинет: Vue 3, Pinia, Axios, vue-i18n, Tailwind CSS
- Интерфейс на четырёх языках: русский, казахский, узбекский, английский
- Уведомления: SMS, WhatsApp, Telegram; мониторинг — Prometheus и Grafana
Объём проекта
Общая часть
- Архитектура двух приложений в одном хранилище кода: общие Dart-пакеты (вход, связь с сервером, компоненты дизайна, переводы, работа без связи) и отдельные сборки каждого приложения.
- Общий аккаунт: вход по коду из SMS, безопасное хранение сессии с короткоживущим токеном доступа и его обновлением.
- Push-уведомления (Firebase Cloud Messaging и Apple Push Notification service).
- Сбор ошибок и падений (Firebase Crashlytics или Sentry).
-
Приложение биржи
- Лента грузов и машин с фильтрами и обновлением в реальном времени через WebSocket, карточка груза, отклик, мои перевозки, уведомления.
-
Приложение водителя
- Вход по приглашению логиста из SMS, без регистрации компании.
- Рейсы и карточка рейса, отметки шагов «Едет на погрузку», «Погрузка», «В пути», «Разгрузка», съёмка и загрузка фото груза и документов со сжатием, карта и маршрут.
- Фоновое отслеживание местоположения в рейсе: передача координат при свёрнутом приложении, геозоны погрузки и разгрузки, бережный расход батареи, стабильная работа на устройствах с жёстким энергосбережением (Xiaomi, Samsung, Huawei) и на бюджетных телефонах водителей.
- Работа без связи на трассе: приложение копит координаты, отметки и фото и досылает их, когда появляется сеть, без потерь и дублей.
-
Публикация
- Оба приложения в Google Play и App Store, включая проверку Apple и декларацию Google Play о фоновом доступе к геолокации для приложения водителя.
Обязательные требования
- От 6 лет коммерческой мобильной разработки, из них не меньше 2 лет на Flutter.
- Не меньше двух приложений на Flutter, опубликованных в Google Play и App Store.
- Умение писать нативные модули на Kotlin и Swift и связывать их с Flutter через платформенные каналы (platform channels).
-
- REST, WebSocket, JSON; авторизация токенами с обновлением; генерация кода обращения к серверу из описания OpenAPI.
Будет плюсом
- Будет большим плюсом: опыт фоновой геолокации во Flutter-приложении: готовый модуль (например, flutter_background_geolocation) или собственная реализация; службы переднего плана в Android (Foreground Service), режим Doze, разрешения на геолокацию в Android 10–15, режим «Всегда» в iOS.
- Опыт в логистике, доставке, такси или других продуктах с трекингом; опыт пары приложений «заказчик — исполнитель».
- Прохождение декларации Google Play о фоновой геолокации.
- Карты во Flutter: Яндекс Карты или 2ГИС (у обоих есть официальные модули), Google Maps.
- Автоматическая сборка и публикация (Codemagic, GitHub Actions, fastlane).
- Многоязычный интерфейс, часовые пояса, несколько валют.
- Базовое понимание Go и PostgreSQL.