Фудтех
Доставка Япоки: как создать приложение для будущего энтерпрайза
О проекте
Наш опыт разработки приложения для доставки с большими амбициями и сложной архитектурой. Все началось с мечты клиента – сделайте так, как у энтерпрайза (референс – «Додо пицца»). Она сбылась, но с большим количеством технических нюансов, которые нам в ходе проекта все-таки удалось решить. Кейс будет интересен и брендам, и разработчикам: он рассказывает, как не споткнуться о множество подводных камней, с которыми вы неизбежно столкнетесь в проектах такого масштаба.
Цели и задачи
Что хотел от приложения клиент?
- увеличить количество онлайн-заказов
- повысить средний чек и занять большую долю рынка
- выйти на уровень одного из крупнейших сервисов доставки еды в стране
Что сделали мы?
- приложение для доставки на React Native для iOS и Android с гибким управлением деталями заказа
Наш результат
20 000+
загрузок приложения
200+
заказов в день
35%
от общей доли заказов
Одно дело – создавать приложение, как дополнительный канал продаж в поддержку оффлайн-заведений. Совершенно другое – превратить продукт во флагманское направление, чтобы в перспективе составить конкуренцию самым крупным брендам в сегменте. И все это в условиях быстрого роста клиента.
Мы сделали ставку на максимальное удобство в оформлении заказов, из-за которого пользователям хотелось бы возвращаться в приложение снова и снова.
Как мы встретили Япоки
Клиент обратился к dev.family по рекомендации наших партнеров. Но забрать проект нам помогли большой опыт в foodtech и крутое портфолио в разработке на React Native.
На тот момент Япоки уже был опытным foodtech брендом с развитой сетью, в которой работали:
- 3 собственных ресторана.
- 2 партнёрских заведения.
- серия dark kitchen для быстрой доставки.
Заказы на доставку оформлялись через сайт, который давал сети следующие объемы:
500-600
заказов в день
30-35 минут
среднее время доставки заказа
1000+
посещений сайта в день
Релиз мобильного приложения должен был усилить продажи в онлайне, что в дальнейшем и произошло.
Хотите запустить приложение для доставки?
Давайте обсудим ваш проект!
Давайте обсудим ваш проект!
Максим Б. CEO
Контекст разработки
Спойлер: было много челленджей
Все опытные разработчики знают: обычно все идет гладко только в типовых проектах с простыми задачами, где редко получается сделать что-то выдающееся. В нашем случае команде предстояло решить несколько задач со звездочкой. Но начнем мы с контекста, в котором начали разработку.
Сложности в изменениях
Существующая система уже обслуживала несколько ресторанов, и каждое изменение могло повлиять на всю сеть. Поэтому мы старались избегать любых правок. В результате всю новую логику и обработку, которые не были предусмотрены изначально, нам приходилось реализовывать самостоятельно.
Прототипирование
Первую версию дизайна предоставил сам клиент. Мы не всегда соглашаемся на такие условия, если дальше идем в разработку, так как опираемся на собственную экспертизу в UI/UX. И только в этом случае можем отвечать за качество и сроки.
Обработка данных
Этот проект – хороший пример, как важно просчитывать варианты и направления для масштабирования бизнеса еще на старте. Особенно, когда выбрана сложная архитектура. Иначе в будущем вы неминуемо столкнетесь со сложностями. Например, вся работа с каталогом – управление деталями заказа, отображение блюд в категориях, применение промокодов и другие действия – происходила на клиентской стороне. Поэтому, несмотря на доступ к бэкенду, вносить необходимые изменения и правильно передавать данные, мы не могли. Как мы справились с этой ситуацией, расскажем дальше подробнее.
У дизайнера со стороны Япоки был хороший опыт в графическом дизайне, но не в работе с интерфейсом приложений, где важно учитывать нюансы и компоненты (шрифты, сетки, цвета кнопок и другие элементы), которые дальше будут использованы в разработке. Мы попробовали поработать с исходниками, но дальше сам клиент решил провести редизайн. Для аудита привлекли нашего дизайнера, который показал слабые места и варианты улучшений. Хоть для этого и пришлось сделать паузу в разработке, в итоге получился годный дизайн, который можно было брать в работу.
Как было и как стало можно посмотреть тут:
Инсайтами мы поделились в этой статье
Основной функционал
Пробежимся по приложению и расскажем о его классных фишках и деталях. А также, о сложностях и вызовах, с которыми мы столкнулись.
История заказов
Комбо
Оформление заказа по адресу
Главный экран
После авторизации пользователь может выбрать формат выдачи заказа и перейти к каталогу. Все позиции разбиты по категориям – «Роллы», «Пицца», «Закуски» и так далее. Специальный виджет также показывает среднее время доставки по указанному адресу, которое меняется в зависимости от уровня загрузки ближайшего ресторана. Фишкой главного экрана является онлайн-витрина – блок «Не нужно ждать». В него попадают уже приготовленные заказы, от которых в самый последний момент отказались. Здесь пользователи могут выбрать блюдо из этого раздела, если хотят более быструю доставку.
В каталоге и витрине продукт может выглядеть и называться одинаково. Но для логики приложения это два разных продукта. Заказ пиццы «Маргариты», которая была в каталоге изначально, и той, что появилась после отказа, будут по-разному обрабатываться на бэкенде. Поэтому нам понадобилось много дополнительных обработок, чтобы товар, заказанный с витрины, отображался в корзине корректно.
Карточка товара
В основной карточке представлены фотография блюда, описание состава и цена. Дополнительно можно посмотреть данные по нутриентам во всплывающем окне. Пользователь может кастомизировать свой заказ – поменять размер и другие детали, а также добавить к пиццам до четырех дополнительных ингредиентов. Больше нельзя, чтобы не нарушить рецептуру. Об этом предупреждаем в уведомлении.
Поиск товаров по названию и описанию также выполнялся на стороне клиента. Мы настроили процесс так, что из всего массива продуктов в выдачу попадали только точные совпадения. Так система могла показывать нужные блюда по запросу без ошибок.
Для всех товаров в каталоге предусмотрены базовые параметры и разметка. Поэтому если в меню появляется новый продукт, который им не соответствует, то он выбивается из общих размеров и дизайна. В каталоге Япоки карточки товаров имеют прямоугольную форму и прозрачную заливку, поэтому встроить немного закругленную карточку с другой заливкой было уже проблематично. Если вы планируете выделять некоторые позиции, отталкивайтесь от формата, предусмотренного для основной карточки. Также блюр заднего фона при блюда предусмотрен только для приложений на iOS.
Оплата заказа
Для оплаты заказа можно использовать бонусы программы лояльности в двух вариантах – оплатить ими 100% или 50% общей стоимости заказа с учетом минимального лимита на бесплатную доставку. Другие интересные фишки и примеры геймификаций для программ лояльности вы найдете в этой статье.
Идеальное приложение с программой лояльности для ритейлеров
По логике клиента в заказе можно использовать два типа бонусов сразу. Нам нужно было настроить ползунки для их активации с учетом всех лимитов.
Корзина заказов
Пользователь может выбрать время доставки, способ оплаты и формат выдачи заказа – по указанному адресу или с подачей на конкретный номер столика в ресторане. Если какое-то блюдо на момент оформления заказа отсутствует, появляется соответствующее уведомление.
Если вы планируете принимать заказы из других тайм-зон (вдруг кто-то захочет сделать сюрприз близкому человеку) обязательно предусмотрите это условие на бэкенде. Иначе при подтверждении заказа у пользователя будет возникать ошибка, что в данное время рестораны и dark kitchen не работают. Ее довольно легко исправить, чтобы сделать вашу доставку worldwide.
Дополнительные опции
И сложности, которые они вызывали
Истории
Топпинги и соусы
Промокоды и реферальная система
Пользователь может не только пользоваться личными промокодами, но и получать скидку по реферальной системе. Для этого ему просто нужно скопировать ссылку и поделиться ей с друзьями. Решение работает по принципу universal link, где сразу после клика пользователь переходит на конкретную страницу, где автоматически выполняется конкретное действие. Например, если у вас нет приложения Япоки, то первым делом вы попадете в AppStore или Google Play для его загрузки. Но уже при повторном переходе по той же самой ссылке, промокод на скидку от друга будет применен автоматически.
Для каждого промокода действуют свои условия – одни активируют скидку на определенный тип товара, другие предоставляют товар бесплатно. Логикой применения скидок и обработкой ограничений промокодов занимались мы на стороне приложения. Сейчас от бэкенда приходит список товаров и условия, мы проверяем это соответствие и сообщаем, можно ли воспользоваться акцией. Или указываем, какие условия для этого надо соблюсти. Такие уведомления снижают негатив со стороны клиентов, когда они не понимают, почему промокод не срабатывает. И помогают увеличить средний чек заказа, если пользователь намерен применить скидку.
Специальная опция: трансляция статуса заказа
После оформления заказа пользователь может увидеть его статус и в прямом эфире наблюдать за приготовлением. Да-да, как в Dodo 🍕
Если вы собираетесь добавить в ваше приложение функцию стриминга из кухни ресторана, будьте готовы, что не все мобильные плееры могут проигрывать ссылки такого формата. Мы перенесли трансляцию в webview, чтобы все работало. Только немного поправили стиль, чтобы стрим красиво вписывался в интерфейс приложения. Также для автоматического изменения статуса заказа и других действий в режиме реального времени без необходимости обновить экран, лучше использовать сокеты – программный интерфейс для непрерывного обмена данными между процессами.
Доставка и всё, что с ней связано
Больше функций и подходов, которые используют мировые бренды доставки:
Стек технологий
В качестве основного front-end-стека мы используем Reactive Native, а для работы с уведомлениями - Firebase.
Суть продукта
Часто в погоне за уникальностью предприниматели пытаются накрутить кучу лишних идей и фич. Но есть паттерны поведения, к которым пользователи привыкли. И игнорировать их, потому что: «О боже! Мы не хотим быть похожи на конкурентов!» – глупо. Если вы хотите, чтобы людям нравилось пользоваться вашим продуктом, позаботьтесь, чтобы там присутствовал привычный функционал.
Быстрое определение адреса, возможность гибко распоряжаться баллами в программе лояльности, применять личные промокоды и управлять составом блюд – это база. Даже если внутри заложена сложная логика, которая требует кастомной разработки.
А чтобы отличаться от других, дарите клиенту хороший сервис: дополнительные предложения, бонусы, промокоды – все, чтобы его опыт был лучше.
Программы лояльности в мобильных приложениях
Больше идей для повышения лояльности в нашей статье:
В чем ценность для брендов, которые захотят использовать такое решение?
Разработать собственное приложение для доставки или самовывоза заказов в рамках уже существующего ресторана – это, конечно, отважный шаг. Заведения чаще всего выбирают между коробочным решением и доставкой через агрегатор ресторанов. Объясним, почему все-таки лучше сделать свое приложение, и в каком случае нужен кастом.
Собственное приложение позволит:
Контролировать взаимодействие клиента с заведением, от заказа до доставки. Поддерживайте высокий уровень обслуживания и лояльности клиентов, лично контролируйте скорость работы кухни и курьеров.
Предоставить клиентам целостный и персонализированный опыт, благодаря единому и уникальному дизайну. А также с возможностью начинать заказ на одном устройстве, а продолжать на другом.
Внедрить собственную программу лояльности, скидки и бонусы, чтобы стимулировать повторные покупки. Не отдавайте своих клиентов другим заведениям.
Получить данные о поведении клиентов, чтобы лучше понимать их предпочтения и адаптировать предложения под них. Следите за популярностью товаров, временем перехода к оплате и другими важными деталями. В агрегаторах эти данные остаются у платформы.
Сэкономить до 30% благодаря отсутствию комиссий на размещение в каталоге сторонних сервисов.
Менять цены и условия доставки, чтобы оптимизировать прибыль, не ограничиваясь условиями агрегатора.
Продвигать персонализированные предложения и уведомления, основанные на истории заказов и предпочтениях клиентов. Это существенно повысит конверсию и частоту заказов.
Предлагать уникальные блюда или услуги (например, возможность создания кастомных блюд, предзаказ и самовывоз), – все, что не доступно в агрегаторах.
Индивидуальные решения vs. готовые продукты
А теперь давайте разберемся, в каких случаях готовое решение будет проигрывать разработке с нуля.
Интеграция с существующей инфраструктурой
Например, у вас уже есть написанная логика для бэкэнда и дизайн. Кастомное приложение будет легче интегрировать с текущей системой, сохранить узнаваемость бренда и и всю логику. Вы сможете адаптировать приложение под уникальные требования вашего бизнеса, учесть особенности существующего сайта и предложить клиентам единообразный опыт, независимо от того, пользуются ли они сайтом или приложением.
Масштабировние бизнеса и открытие новых заведений
Кастомные решения легче адаптировать к будущим изменениям. Коробочное чаще всего ограничено функциональными возможностями и обновлениями от поставщика. Поэтому, если компания планирует расширение или введение новых функций, кастомное приложение предпочтительнее.
Избегание затрат на ненужный функционал
Коробочные решения могут содержать функциональность, которая вам не нужна, что усложнит использование и обслуживание приложения. Нет ненужных функций – проще использование и выше производительность.
Поддержка и обслуживание
В случае кастомного приложения у вас есть прямая поддержка от команды разработчиков, которая его создала. Это означает, что любые проблемы или запросы на изменения могут быть решены быстрее, чем в случае использования коробочного решения, где вы зависите от поддержки поставщика.
Малый бизнес vs. крупная сеть
Если вы небольшое заведение на старте, без опыта и планов на масштабирование, кастомная разработка вам не нужна — инвестиции не окупятся. Для тестирования гипотез и базового сервиса хватит «коробочного» решения. Но когда вы уже несколько лет на рынке, знаете слабые места и свою аудиторию, стоит обсудить с разработчиками, как они могут помочь решить ваши задачи.
Воплотите свои идеи в жизнь
Расскажите, какие идеи вы хотели бы включить в свое приложение для доставки, а мы придумаем, как это реализовать, используя лучшие практики foodtech-рынка.