Ми розробляємо мобільні додатки для кур'єрів доставки їжі. Ця роль специфічна: короткі маршрути (1–5 км), до 30 замовлень за зміну, часті поїздки на велосипеді або самокаті, жорсткі часові рамки — їжа має залишатися гарячою. Додаток зобов'язаний працювати без лагів, з мінімальною кількістю тапів на ключових діях та точно показувати шлях від ресторану до клієнта. За 7 років ми випустили 15+ додатків для доставки та знаємо кожну технічну деталь.
Чому критична синхронізація таймера прийняття замовлення?
Нове замовлення приходить як push-повідомлення з таймером. У кур'єра є 30–45 секунд, щоб прийняти або відхилити. Якщо не відповів — замовлення йде наступному. На екрані відображаються адреса ресторану, адреса клієнта, відстань, розрахунковий час та вартість замовлення.
Таймер реалізовано як круговий прогрес-бар зі зворотнім відліком. На iOS використовуємо CAShapeLayer з анімацією strokeEnd, на Android — кастомний View з Canvas.drawArc. Таймер клієнтський, синхронізований з сервером за timestamp створення оферу, а не за моментом отримання push — push може затриматися на 8–10 секунд через FCM. Ми бачили помилку: таймер рахував від отримання push, кур'єр бачив 22 секунди замість 30, натискав «прийняти» в останній момент, але сервер уже віддав замовлення іншому. Рішення: в payload push включаємо offer_created_at, клієнт обчислює різницю з Date.now().
Як ми налаштовуємо навігацію для різних типів кур'єрів?
Маршрут складається з двох етапів: спочатку до ресторану (забрати), потім до клієнта (доставити). На кожному етапі — turn-by-turn навігація. Для велокур'єра та пішого — пішохідний маршрут, для автомобіля — автомобільний. Режим визначається автоматично за швидкістю руху (GPS speedometer: >15 км/год — авто, інакше піший/вело) або вибирається вручну при реєстрації.
Mapbox Navigation SDK підтримує профілі cycling та walking з коробки. Google Maps Navigation SDK також підтримує, але при великих обсягах замовлень виходить дорожче. Mapbox SDK у 2,5 рази дешевший за Google Maps SDK при 100 000 запитів на місяць.
| Параметр | Mapbox SDK | Google Maps SDK |
|---|---|---|
| Профілі маршрутів | Піший, вело, авто | Піший, вело, авто |
| Вартість при 100k запитів/міс | ~$150 | ~$400 |
| Офлайн-карти | Так, з кешуванням | Тільки з Premium |
| Простота інтеграції | Швидке налаштування | Складна конфігурація |
Одночасно кілька замовлень
Просунута функція (Яндекс.Лавка, Delivery Club «пачка»): кур'єр бере 2–3 замовлення з одного ресторану, розвозить за різними адресами. Маршрут будується як послідовність точок з оптимальним порядком через waypoints у Directions API. На клієнті — список точок з кнопкою «виконано» для кожної.
Що входить у розробку додатку для кур'єра?
Ми надаємо повний комплект deliverables:
- Технічна документація та архітектура
- Дизайн екранів (Figma) з урахуванням UX для швидких дій
- Вихідний код під iOS/Android/кроссплатформу
- Налаштування push-повідомлень (APNs/FCM) та геофенсів
- Інтеграція платіжного шлюзу (Stripe, PayPal)
- Розгортання в App Store та Google Play з проходженням рев'ю
- Навчання команди замовника (2–3 години)
- Підтримка протягом 1 місяця після запуску
Процес роботи: від аналітики до публікації
| Етап | Тривалість | Результат |
|---|---|---|
| Аналітика та прототип | 1–2 тижні | User stories, wireframes, API-специфікація |
| Дизайн | 1–2 тижні | Pixel-perfect макети всіх екранів |
| Розробка backend та клієнта | 4–6 тижнів | Працюючий MVP у staging |
| Тестування та баг-фіксинг | 1–2 тижні | QA-звіт, виправлені баги |
| Деплой у стори | 1 тиждень | Додаток в App Store та Google Play |
Термін: від 6 до 10 тижнів до першого релізу. Вартість розраховується індивідуально.
Як забезпечити офлайн-доступ до даних?
Велокур'єр у підвальному ресторані — без мережі. Критичні дані (адреса клієнта, номер телефону, код домофону) кешуються при отриманні замовлення. Для відправки статусів використовуємо exponential backoff: якщо запит «доставив» не пройшов, повторюємо зі збільшенням затримки, поки не отримаємо підтвердження сервера. Кур'єр не повинен вручну тикати «відправити ще раз».
Приклад конфігурації офлайн-черги на iOS
let operationQueue = OperationQueue() operationQueue.maxConcurrentOperationCount = 1 // Використовуємо Reachability для моніторингу мережі Підтвердження отримання замовлення в ресторані
Кур'єр забирає замовлення та підтверджує це скануванням QR-коду на чеку (надійно) або натисканням кнопки «забрав» (простіше, але без верифікації). QR-сканування через MLKit або Vision займає 0,5–1 секунду. Для автоматичного появи кнопки «забрав» використовуємо GPS-геофенс з радіусом 50–100 метрів — кнопка активна тільки коли кур'єр дійсно біля ресторану. Це виключає помилкові натискання з іншого місця.
Чайові та рейтинг
Після доставки — екран з пропозицією залишити чайові (опціонально). Використовуємо Stripe Payment Intents для постоплати. Клієнт оцінює кур'єра — рейтинг агрегується в профілі. По завершенні зміни кур'єр бачить сумарний заробіток, кількість доставок, середній рейтинг. Графіки будуємо за допомогою SwiftCharts (iOS 16+) або MPAndroidChart — простий bar chart за годинами зміни. В середньому кур'єр отримує 150 грн чайових за замовлення, що при 20 замовленнях на день дає додатково 3000 грн.
Як збільшити заробіток кур'єра через додаток?
- Оптимізуйте маршрути — менше холостого пробігу.
- Додайте систему рейтингу — високий рейтинг підвищує довіру та чайові.
- Впровадьте офлайн-режим — кур'єр не втрачає замовлення при втраті мережі.
Отримайте консультацію по вашому проекту — оцінимо терміни та вартість безкоштовно. Замовте розробку під ключ з гарантією якості та дотриманням термінів. Ми гарантуємо проходження рев'ю в сторах з першого разу — наш досвід це підтверджує.







