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

Заказчик
OvOska.
Задача
Разработать кроссплатформенное MVP-приложение для тестирования гипотезы клиента.

Миссия и задачи клиента

Заказчик и идейный вдохновитель проекта преследует цель сделать рынок доставки прозрачным, простым и доступным. Это новая «философия», основанная по принципу “win-win-win”. Ведь OvOska — это просто для всех и доступно для каждого.

Перед стартом разработки мобильного приложения мы выделили 3 группы сложностей, с которыми сталкиваются целевые аудитории:

— малый и средний бизнес: у небольших кафе, продуктовых магазинов нет возможности сотрудничать с гигантами индустрии (Яндекс.Еда, Delivery Club);
— курьер: не всегда подходящие условия сотрудничества, зависимость от работодателя, обязательный дресс-код; 
— покупатель: любимые магазины не всегда сотрудничают с крупными сервисами доставки, получить необходимые товары иногда невозможно.

Решение бизнес-задач

К решению поставленных задач мы подошли по методологии “more flexible than agile”. Команде было важно полностью контролировать бюджет и время разработки. На первом этапе требовалось самое необходимое: достойный UI и полностью рабочий функционал, отвечающий новой концепции доставки в России.

В итоге решение задач мы объединили в одно кроссплатформенное приложение OvOska. В нем нет short-листов с ресторанами и кафе, с которыми можно сотрудничать. Нет никаких жёстких требований  для курьеров: дресс-код, наличие автомобиля, рабочий график. А основные пользователи могут заказать не только еду, но и цветы для именинницы или батарейки для радиоуправляемого вертолёта сына.

Функциональные особенности

Авторизация в приложении

Для упрощения авторизации пользователей в приложении мы воспользовались простым проверенным механизмом — технологией Firebase Authentication. Чтобы начать пользоваться приложением, достаточно ввести номер телефона, получить по СМС код и отправить его обратно для проверки.

Маршрут доставки 

Мы интегрировали приложение с картами, чтобы каждый пользователь с легкостью мог сделать заказ. На ней можно увидеть область доставки курьера и поставить метки «Магазин — конечная точка доставки».

Чат и push-уведомления

Диалог между покупателем и курьером происходит в чате. Теперь найти альтернативу отсутствующему товару можно не только с помощью звонка, но и в чате приложения OvOska. Чтобы взаимодействие протекало более продуктивно, пользователи могут обмениваться фотографиями продуктов. 

Все действия курьера, сведения о процессе доставки и сообщения сопровождаются push-уведомлениями. Пользователи приложения всегда остаются в курсе, если назначен курьер, изменилась цена или сменился статус заказа.

Режимы: пользователь, курьер 

Для упрощения логики приложения команда ушла от нескольких уровней доступа. Так пользователи и курьеры OvOska могут перейти из режима «заказать» в «доставить» с помощью только одного нажатия кнопки.

Трудности, с которыми столкнулись

Картографические сервисы и Flutter

Так как OvOska — MVP-приложение, требовалось оптимизировать бюджет на каждом шагу. И первая сложность возникла на этапе выбора картографических сервисов. Мы перебрали три разных варианта. С одной стороны — ни один не подошёл по стоимости и условиям. С другой — кроссплатформенная технология Flutter и ее библиотеки не позволяли сделать всё так, как требовалось заказчику. 

И ещё стоит взять во внимание факт, что Flutter молод. Документации и объяснений “how to” для нюансов работы с картами практически нет. В итоге реализация подсвеченной области вокруг курьера заняла немного больше времени, чем мы ожидали. 

Рисование полигонов

Еще одна интересная задача — отрисовка полигонов. Требовалось объединить все зоны доставки вокруг курьеров в одну область, в полигон. И передать эту информацию с сервера на сторону мобильного приложения — конечному пользователю.

Изначально для решения этой задачи мы использовали базу данных MySQL. Оказалось, что этого было недостаточно, потому после отдали предпочтение PostgreSQL, расширениям PostGIS, Cube, Earthistance и библиотеке Laravel. 

По итогу с задачей справились: клиент доволен, пользователи получают корректную информацию о рабочей области курьеров.

Логотип Google

Отдельной темой для обсуждения заслуживает логотип Google, который необходимо показывать в приложении на условиях бесплатной лицензии. 

Изначально положение логотипа фиксировалось в нижнем правом углу. Однако он перекрывался важными компонентами интерфейса. Поэтому нам пришлось постоянно двигать логотип, что привело к багам и усложнению логики отображения карты.

Забавная ситуация

Когда мы занималась разработкой чата, наша команда столкнулась с неоднозначной ситуацией. При тестировании работоспособности чата, отправляя друг другу сообщения по очереди, обнаружили баг.

Время отправки сообщения зависело не от сервера, а от локального времени устройства. А это значит, если, предположим, Пётр отправил месседж в 12:00, то ответ он может получить в 11:55, так как у Василия системное время смартфона отстаёт от серверного на 5 минут. 

Ситуации были разные, и все они были смешными, но решение было одно. Для исправления бага мы стали использовать серверное время, как единственно правильное.

Результаты и планы

На данный момент мы вместе с заказчиком тестируем MVP-версию приложения в Санкт-Петербурге. И пока жизнеспособность сервиса проверяется временем, а клиент находится в поиске инвесторов для масштабирования идеи — наша продуктовая команда постоянно улучшает продукт. 

Хочется отметить, Flutter-разработчики INOSTUDIO здорово прокачались во многих технических аспектах: приложение оказалось далеко не таким простым, как его изначально описали на этапе технического задания.

Отзыв клиента

INOSTUDIO — это отличная команда разработки, грамотный руководитель проекта и UI/UX-дизайнер со вкусом. Там, где я даже не ожидал, все было проработано и закрыто. Да, иногда на все не хватало рук, но время — это всегда ресурс, которого не хватает. Так что мне всё нравится. Любой другой проект с удовольствием делал бы снова с INOSTUDIO.

Стек технологий

Flutter, Google Maps, DaData, Firebase Auth, FIrebase Cloud Messaging (Firebase Cloud Function), Firestore, Sign in with Apple, PHP, Laravel, React, PostgreSql, PHP. 


Перейти на сайт

В карточку агентства

Письмо автору кейса

Подпишитесь на рассылку
Читайте также
Кейсы по теме#Транспорт, авиация, космос