Розробка мобільного додатку для доставки їжі

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Розробка мобільного додатку для доставки їжі
Складний
від 2 тижнів до 3 місяців
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Розроблення мобільного додатку для доставки їжі

Доставка їжі технічно схожа на таксі: геолокація, реальний трекінг, платіжний шлюз. Але є істотні відмінності — каталог блюд з варіантами та модифікаторами, логіка ресторану з розписанням та стопами, час приготування як окрема змінна в розрахунку доставки, та зони доставки з різною ціною залежно від відстані.

Три типи систем

Агрегатор (по моделі Delivery Club) — багато ресторанів, спільний пул курʻєрів, клієнт вибирає з кількох закладів. Складна диспетчеризація, API для підключення ресторанів, власний парк курʻєрів або аутсорсинг.

Власна доставка ресторану — один ресторан або сітка, власні курʻєри. Простіша архітектурно, але потрібна панель управління для адміністратора ресторану.

White-label платформа — та ж архітектура, що у агрегатора, але для конкретного ресторану або невеличкої мережі. Проміжний варіант.

Для більшості стартапів на старті — другий або третій тип. Агрегатор вимагає окремого продукту для підключення партнерів, це подвоює обсяг роботи.

Каталог та корзина

Меню ресторану — не просто список блюд. Категорії, підкатегорії, блюда з варіантами (розмір піци, степінь прожарки, добавки). Структура даних повинна підтримувати модифікатори: «додати сир +80₽», «вибрати соус» (обов'язковий одиночний вибір), «убрати цибулю» (опціональний).

{
  "id": 42,
  "name": "Піца Маргарита",
  "base_price": 590,
  "modifier_groups": [
    {
      "id": 1,
      "name": "Розмір",
      "required": true,
      "min_select": 1,
      "max_select": 1,
      "options": [
        {"id": 11, "name": "25 см", "price_delta": 0},
        {"id": 12, "name": "35 см", "price_delta": 150}
      ]
    },
    {
      "id": 2,
      "name": "Додатково",
      "required": false,
      "max_select": 3,
      "options": [
        {"id": 21, "name": "Подвійний сир", "price_delta": 80},
        {"id": 22, "name": "Гострий перець", "price_delta": 0}
      ]
    }
  ]
}

Логіка корзини на клієнті: кожна позиція зберігає базовий product_id + вибрані modifier_ids. Ціна рахується на клієнті для відображення, на сервері — для фінального замовлення. Корзина зберігається локально при закритті додатку.

Зони доставки та мінімальна сума

Ресторан доставляє не везде та з різною ціною. Зони задаються полігонами — не простими колами. При вводі адреси доставки перевіряємо попадання в полігон: клієнтська перевірка (через Google Maps containsLocation(point, polygon) або port turf.js на Dart/Swift/Kotlin) як швидкий UX, серверна перевірка як фінальний арбітр при створенні замовлення.

PostGIS на сервері: ST_Contains(zone.polygon, ST_MakePoint(:lon, :lat)) — надійно та точно.

Кожна зона — окремена рядок в таблиці зі своєю вартістю доставки та мінімальним замовленням. Якщо адреса не попадає ні в одну зону — показуємо сообщення «На жаль, в ваш район ми поки не доставляємо».

Час приготування та доставки

Користувач хоче знати: «коли буде готово та коли привезуть». Час приготування — параметр ресторану, може мінятися залежно від навантаження. Адміністратор встановлює поточний час в панелі управління. Час доставки — розраховуючи на основі відстані та швидкості курʻєра.

Итоговое відображення: "~45 хвилин" (готовка 25 + доставка 20). Не обіцяти точний час, якщо нема інтеграції з реальним диспетчером.

Статуси замовлення та трекінг

Для доставки їжі статуси складніше ніж у таксі:

placed → confirmed → preparing → ready_for_pickup → courier_assigned → courier_picked_up → delivering → delivered

Клієнт бачить спрощену схему: «Прийнято» → «Готується» → «В дорозі» → «Доставлено». Між «В дорозі» та «Доставлено» — трекінг курʻєра на карті (той же WebSocket + анімований маркер).

Push-сповіщення на кожен перехід статусу. Firebase Cloud Messaging, data-сповіщення для фонової обробки, notification для відображення. На iOS — UNNotificationContent з категорією ORDER_UPDATE, на Android — виділений NotificationChannel.

Оплата

Онлайн-оплата (CloudPayments / YooKassa / Tinkoff Acquiring) + оплата готівкою при отриманні + Apple Pay / Google Pay. Предавторизація (холд) — стандартна практика для доставки: сума холдується при створенні замовлення, списується при підтвердженні. Якщо ресторан не прийняв замовлення — холд знімається автоматично.

Промокоди та бонусна система — окремий модуль. Застосовуються на етапі підтвердження замовлення, скидка рахується на сервері.

Додаток адміністратора ресторану

Без нього система не працює в продакшені. Мінімальний набір екранів:

  • Поточні замовлення (список з таймерами, статусами)
  • Управління стопами (кнопка «блюдо закінчилося»)
  • Поточний час приготування (поле вводу, застосовується одразу)
  • Розписання роботи

Може бути веб-панеллю, не обов'язково мобільним додатком на першому етапі.

Стек

Компонент Технології
iOS клієнт Swift, UIKit/SwiftUI, GoogleMaps SDK, CloudPayments
Android клієнт Kotlin, Jetpack Compose, Google Maps SDK
Flutter Dart, flutter_bloc, google_maps_flutter
Бекенд Node.js / Laravel / Django, WebSocket, PostgreSQL + PostGIS, Redis
Сповіщення Firebase Cloud Messaging

Тривалість проекту

MVP (одна платформа, один ресторан, базовий трекінг): вісім-дванадцять тижнів.

Повна платформа (iOS + Android, панель ресторану, агрегатор кількох закладів, аналітика): п'ять-вісім місяців.

Вартість розраховується індивідуально після аналізу вимог та декомпозиції на завдання.