Розробка мобільного додатку для каршерингу
Користувач нажимає «розблокувати» на карті — команда йде на CAN-шину автомобіля через IoT-блок, двері відкриваються через 2–4 секунди. Якщо через 30 секунд нічого не сталось, він нажимає ще раз. Двері відкриваються двічі. Ось чому команди управління автомобілем вимагають idempotency key та підтвердження через callback, а не fire-and-forget.
Телематика та управління автомобілем
Серце каршеринг-платформи — це телематичний блок в машині (Teltonika FMB140, Queclink GV620, Neomatica ADM700 або аналоги), який з'єднується з сервером через GPRS/LTE і приймає команди: відкрити/закрити двері, дозволити/заборонити запуск двигуна, включити сигналізацію. Мобільний додаток сам з машиною не розмовляє — все через сервер.
Схема команди:
- Додаток відправляє команду на API (POST
/cars/{id}/commands) з idempotency-key - Сервер пише команду в чергу (RabbitMQ або Kafka)
- Воркер відправляє команду на телематичний блок через TCP/UDP
- Блок підтверджує виконання
- Сервер відправляє push-уведомлення додатку про результат
Якщо крок 4 не сталось за 30 секунд — сервер повертає помилку, додаток показує конкретний статус. Не «щось пішло не так», а «автомобіль не відповів на команду — можливо, нема мережі в цій точці».
Карта та пошук автомобіля
Відображення флоту на карті — це clustering маркерів при низькому zoom. Google Maps SDK та MapKit обидва це підтримують нативно, але при 500+ автомобілях онлайн потрібен server-side clustering: сервер повертає кластери з центроїдами і счітачем, клієнт рисує агреговані маркери. При zoom > 14 переходимо до окремих іконок з кольоровою індикацією заряду батареї / рівня палива.
Пошук «знайти найближчу вільну машину» — запит з геолокацією користувача та радіусом. PostGIS на бекенді (ST_DWithin) + індекс на координатах. Відповідь — список з відстанню та маршрутом пішки через Google Maps Directions (режим WALKING).
Онбординг та верифікація
Каршеринг вимагає верифікації водійського посвідчення та паспорта. Стандартний шлях — інтеграція з сервісами liveness + document recognition:
- Smile Identity або Onfido для міжнародних проєктів
- Суфтех, GetID або ЕЦРН (через Госуслуги / ГІС МВД) для російського ринку
Технічна реалізація: нативна камера з підказками по розташуванню документа (оверлей з рамкою), завантаження фото через multipart/form-data, polling статусу верифікації через WebSocket. Не зберігаємо фото документів на пристрої довше сеансу завантаження.
Оренда та оплата
Сесія оренди — це state machine: available → reserved → active → completed. Кожен перехід атомарен на сервері. Мобільний клієнт відображає поточний статус через WebSocket subscription або long-polling з ETag.
Оплата — Stripe (міжнародно) або ЮKassa/CloudPayments (РФ). Важливий нюанс: холдирування суми (payment_intent зі статусом requires_capture) при початку оренди, реальне списання після завершення з пересчітом за фактом часу. Stripe SDK для iOS та Android надають готові Payment Sheet, які вже обробляють 3DS, SCA, збереження карт.
Перевірка стану автомобіля
До початку оренди користувач фотографує подряпини та пошкодження. Це захист і для нього, і для оператора. Реалізуємо через CameraX з multiple captures, завантажуємо в облако (S3/GCS) з геотегом (EXIF GPS дані) та timestamp. Після завершення оренди — те ж саме.
Автоматичне розпізнавання пошкоджень через ML-модель (YOLOv8 fine-tuned на пошкодження авто) — опціональна фіча, яку реалізуємо через Core ML (iOS) або TensorFlow Lite (Android). Знижує навантаження на службу перевірки, але вимагає якісного датасету.
Архітектура та стек
| Компонент | Технологія |
|---|---|
| Кросплатформена розробка | Flutter (BLoC) |
| Нативний Android | Kotlin + Compose + Hilt |
| Нативний iOS | Swift + SwiftUI + Combine |
| Карти | Google Maps SDK / MapLibre |
| Телематика | REST API + WebSocket |
| Оплата | Stripe SDK / ЮKassa SDK |
| Верифікація | Onfido / GetID |
| Краш-моніторинг | Firebase Crashlytics |
| A/B тести | Firebase Remote Config |
Етапи розробки
- Аудит телематичної інфраструктури — які блоки встановлені, який протокол, чи є API
- Архітектура state machine оренди на сервері + API-контракт з мобільним клієнтом
- Дизайн — карта, пошук, онбординг, сесія оренди
- Розробка — MVP включає: карту з флотом, бронювання, відкриття автомобіля, оплату, завершення оренди
- Верифікація — інтеграція з KYC-провайдером, тестування граничних кейсів (просроченого ВУ, нечіткого фото)
- Публікація — App Store (категорія Transport) + Google Play
Строки: MVP — 3–4 місяці, повна платформа з аналітикою, корпоративним кабінетом та розширеною телематикою — 6–9 місяців. Вартість розраховується індивідуально після аудиту вимог.







