Казахстанский центр электронной коммерции

Senior Flutter Developer

Не указана
  • Алматы
  • Более 6 лет

О проекте

FURGON — биржа грузоперевозок для Центральной Азии. Грузовладельцы публикуют грузы, перевозчики находят их и откликаются, а перевозка ведётся прямо на площадке: статусы рейса, документы, местоположение машины. Первая страна — Казахстан, следом Узбекистан и Кыргызстан.

Сервер и веб-кабинет уже работают. Нужно сделать два мобильных приложения под Android и iOS на Flutter из общей кодовой базы:

  1. приложение биржи: для грузовладельца, экспедитора и логиста перевозчика;
  2. приложение водителя: рейсы, статусы, фото документов, фоновое отслеживание местоположения.

Аккаунт у приложений общий. Дизайн готов, экраны нарисованы.

Формат работы

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

Технология

Оба приложения делаются на 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.