Розроблення мобільного додатку для доставки товарів
Доставка товарів відрізняється від доставки їжі кількома принципіальними моментами: товари можуть бути крупногабаритними та важкими (що впливає на розрахунок тарифу), час доставки вимірюється не годинами, а інтервалами («з 14 до 16»), часто потрібна підпис при отриманні або перевірка вмісту. І головне — каталог товарів та логіка складу зазвичай інтегрується з зовнішніми ERP/WMS-системами, а не живе всередину додатку.
Архітектура та інтеграції
Типова структура для інтернет-магазину з власною доставкою: мобільний додаток клієнта, додаток курʻєра, панель диспетчера, інтеграція з 1С/МойСклад/іншою обліковою системою через API або чергу сообщень.
Каталог товарів — не в мобільній базі даних. Синхронізація з ERP через REST API або RabbitMQ/Kafka-события при оновленні. Додаток зберігає кеш каталогу в Room/Core Data з TTL та інвалідацією при отриманні события «оновлення ассортименту».
Залишки — критичний момент. Товар, якого немає на складі, не повинен бути доступний для замовлення. Окремий API-ендпоінт для перевірки доступності при додаванні в корзину та при фінальному підтвердженні замовлення — подвійна перевірка обов'язкова.
Розрахунок тарифу з урахуванням параметрів товару
Для курʻєрської доставки товарів тариф залежить не тільки від відстані, але й від характеристик вантажу:
- Вага — основний параметр. Кроки: до 1 кг, 1-5 кг, 5-20 кг, понад 20 кг
- Габарити — «негабаритний» вантаж (не влізає в легковий автомобіль) вимагає іншого типу транспорту
- Крихкість — додаткова страховка, спеціальна упаковка
- Температурний режим — продукти харчування, медикаменти
Матриця тарифів краще зберігати на сервері (не хардкодити в додатку). Запит вартості: POST /delivery/calculate з параметрами замовлення, відповідь — список доступних типів доставки з ціною та орієнтовним сроком.
Часові слоти доставки
Клієнт вибирає інтервал доставки, а не конкретний час. Система слотів:
Слоти генеруються на N днів вперед, кожен має ліміт замовлень (ємність). При заповненні — слот недоступний. Ємність залежить від кількості активних курʻєрів в цей період.
data class DeliverySlot(
val date: LocalDate,
val startTime: LocalTime,
val endTime: LocalTime,
val available: Boolean,
val remainingCapacity: Int
)
На екрані вибору — горизонтальний скролл по датам, під ним — сітка слотів. Недоступні слоти — сірі, неінтерактивні. Популярний паттерн: спочатку показуємо «ближайшее доступне час» як рекомендацію.
Додаток курʻєра для доставки товарів
Істотно відрізняється від курʻєра таксі. Курʻєр по доставці товарів зазвичай має кілька замовлень на одному маршруті, та йому потрібна оптимізація маршруту.
Маршрутний лист — список точок доставки на сьогодні, відсортованих по оптимальному маршруту. Оптимізацію маршруту рахує сервер (Google Optimization API, OR-Tools або простий жадний алгоритм для невеличких маршрутів) та передає курʻєру впорядкований список.
Підтвердження доставки — фото одержувача з товаром або QR-сканування коду замовлення. Підпис на екрані через UIBezierPath / Canvas API. Ці дані зберігаються як доказ доставки.
Частинковий відмова — клієнт прийняв 3 з 4 товарів. Курʻєр відмічає відмовлені позиції в додатку, сервер створює повернення.
Отстеження для клієнта
Клієнт отримує push-сповіщення, коли курʻєр почав рух до нього. Відображення на карті — спрощений трекінг: маркер курʻєра + маршрут + розраховуючи час прибуття. Не потрібна секундна точність, як у таксі — достатньо оновлення раз на хвилину.
SMS/WhatsApp-сповіщення з посиланням на трекінг — для клієнтів, які не користуються додатком. Посилання веде на веб-сторінку трекінгу (PWA або простий HTML).
Повернення та рекламації
Механіка повернення товару — окремий флоу: клієнт ініціює повернення в додатку, вказує причину, прикладає фото. Сервер створює заявку в CRM/ERP. Повернення грошей — через той же платіжний шлюз методом refund.
Строк зберігання чека та документів доставки: архівуємо на S3/MinIO з метаданими замовлення.
Тривалість проекту
MVP (одна платформа клієнта + додаток курʻєра, базовий каталог, один тип доставки): вісім-чотирнадцять тижнів.
Повна платформа (iOS + Android, інтеграція з 1С, часові слоти, повернення, панель диспетчера): чотири-вісім місяців.
Вартість визначається після аналізу вимог, обсягу інтеграцій та декомпозиції на завдання.







