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

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) или библиотеку turf.js в виде port на 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, панель ресторана, агрегатор нескольких заведений, аналитика): пять-восемь месяцев.

Стоимость рассчитывается индивидуально после анализа требований и декомпозиции на задачи.