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

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

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

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

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

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

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

a1699afe7f38eb579ae2ef9b8a49e019.png

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

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

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

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

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

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

1cf09a0c434e6f83a00beb5ef5526026.png

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

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

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

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

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

90f3dbacfaadc0ceb26d1a2a98a4ff81.png

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

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

36142905ef46e225596b72bba4031e05.png

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

Картографические сервисы и 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. 

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

Полный текст статьи читайте на CMS Magazine

Опубликовано: 19 октября 2021
↓