Whizzy — логистическое приложение для услуг доставки
Задача
Whizzy — это служба доставки товаров работающая в странах Ближнего Востока. Задача Stfalcon заключалась в создании с нуля мобильных приложений для iOS и Android на двух языках: арабском и английском. Кроме того, необходимо было разработать админ панель и дизайн сайта для привлечения клиентов.
Платформа Whizzy состоит из двух приложений: для клиентов и для водителей. Клиенты формируют заказы и выбирают водителей, которые будут их выполнять. Водители же ищут необходимые предметы и выполняют заявки.
Whizzy состоит из:
- Приложения для Android и iOS для клиента,
- Приложения для Android и iOS для водителя,
- Панели администратора,
- Интернет сайта.
Решение
Выполняя проект для Whizzy, Stfalcon реализовал следующие этапы:
- Исследование,
- UX / UI дизайн,
- Backend разработку,
- Frontend разработку,
- Разработку под iOS и Android,
- Ручное тестирование.
Команда Stfalcon начала работу над проектом с этапа исследования, чтобы выяснить потребности двух категорий пользователей, понять контекст использования сервиса и, как следствие, создать путь пользователя, пользовательские истории, и концепцию продукта. Это было необходимо для общего понимания проекта, его оценки и предоставления клиенту план-графика разработки программного решения.
На основе пользовательских историй, которые мы получили в результате фазы исследования, мы разделили приложение на две версии. Первая должна была стать продуктом с минимально необходимым функционалом (MVP), а вторая версия должна быть разработана с дополнительными функциями после запуска MVP.
Ключевые функции в MVP
Приложение для заказчика
Клиенты — это люди, которым нужна помощь с переездом, транспортировкой мелких предметов или даже продуктов питания. Для этого им нужно: выбрать дату и время доставки, быть на связи с водителем, отслеживать посылки в реальном времени, быть уверенными в целостности своих вещей. Исходя из этих потребностей мы выделяем наиболее важные функции для MVP:
- Быстрая регистрация по номеру телефона,
- Создание заказа: выбор адреса, выбор даты и времени, инфо о получателе, добавление фото посылки, выбор типа машины, дополнительная помощь грузчиков,
- Выбор водителя, который предлагает лучшую цену,
- Возможность оплаты,
- Отслеживание заказов в реальном времени,
- Список активных заказов,
- Поддержка.
Выбор времени
Выбор времени Нативный TimePicker — это простое, быстрое в разработке решение с минималистичным и понятным интерфейсом, но мы решили пойти дальше. В данном проекте пользователю было бы удобнее видеть самые популярные часы для заказов, поэтому мы отключили ночное время и оставили период с 8:00 до 20:00. Это позволило уменьшить количество действий, в то время как для стандартного TimePicker требуется 5 действий, реализованные нами тайм-слоты требуют всего одно. Мы не только оптимизировали экран выбора времени, но и ускорили этот процесс в 5 раз.
Приложение для водителя
Водители — это люди, которые хотят подзаработать с помощью своей легковой или грузовой машины. Им важно устанавливать свою цену за доставку, искать заказы недалеко от того места, где они находятся, быть на связи с клиентом. Исходя из этих потребностей, мы выделяем наиболее важные функции для MVP:
- Регистрация с проверкой документов,
- Поиск заказа,
- Отправка запроса с предложением цены и ожидание подтверждения,
- Выполнение заказа с разными статусами,
- Список активных заказов.
- Поддержка
Логотип
Мы создали простой символ дороги в виде буквы и стрелок, обозначающих разные способы доставки. Это лаконичный символ, его легко запомнить. Разработанный в 2020 году логотип можно использовать в печатной продукции и цифровой рекламе, он хорошо читаем как на большом рекламном щите, так и на компактном баннере в Instagram. На данный момент в 2022 году этот символ неуместен в Украине, поэтому мы его удалили из нашего портфолио и заменили на лого из названия.
Разработка
- Android
- iOS
- Backend для приложений
- Backend для панели администратора
Backend для приложений
Backend для мобильных приложений реализован с помощью сервиса RESTful API. Основными backend -технологиями, которые мы использовали, были PHP 7.4 и Symfony 5.1. Мы использовали новейшие версии PHP и Symfony, которые были доступны на момент реализации проекта, что способствовало созданию лучшей внутренней архитектуры и открыло более широкие возможности при разработке. Также мы воспользовались Postgres, Redis и RabbitMQ, мы хорошо знаем эти инструменты, и они позволяют нам решать необходимые задачи.
Предметная среда приложения Whizzy связана с переходом между статусами заказов. В каждом заказе их 10, и переход к каждому новому статусу осуществляется с различной логикой и действиями (отправка уведомлений, проверка возможностей перехода, асинхронные фоновые задачи, бухгалтерия и т. д.).
На backend это реализовано с помощью компонента Symfony Workflow, который позволяет описывать все возможные статусы и переходы между ними. Кроме того, вы можете реализовать подписи для перехода от одного статуса к другому, обозначая бизнес-логику, которая должна выполняться в данной ситуации.
Постоянные изменения статуса заказа требуют передачи обновлений с сервера клиенту. Для этого мы использовали сервер веб-сокетов Centrifugo.
Кроме того, у пользователей мобильного приложения Whizzy есть возможность оплатить доставку платежной картой. Для этого в решение была интегрирована платежная система Tap, работающая в Ближневосточном регионе.
Автоматические тесты также являются важной частью серверной части. API-вызовы и все внутренние сервисы покрываются модульными тестами, функционал админ панели покрывается функциональными тестами, вместе эти тесты дают 100% тестовое покрытие кода.
Backend для панели администратора
Для администраторов приложения мы реализовали личный кабинет, в котором они могут управлять сервисом, делать необходимые настройки и просматривать отчеты. Личный кабинет также реализован на Symfony с использованием EasyAdminBundle.
В процессе разработки проекта была выпущена новая версия Bundle 3.0, и мы использовали именно ее. EasyAdminBundle позволяет быстро и легко настраивать основные операции с сущностями. Кроме того, благодаря сохранению Symfony подходов в своей архитектуре, бандл позволяет удобную кастомизацию под нужды проекта.
Мобильные приложения
- Android
- iOS
Мы осуществили разработку мобильных приложений на основе модульной архитектуры, в соответствии с принципами чистой архитектуры. Мы также использовали архитектуру MVVM для модулей презентации и библиотеку внедрения зависимостей для управления ими.
Все это позволило нам избежать дублирования бизнес-логики в версиях приложений для водителя и для клиента. Более того, это значительно облегчит разработку и сопровождение новых функций в будущем.
Android App
Для платформы Android мы использовали Kotlin и Coroutines, так как сегодня они являются передовыми технологиями в разработке решений Android Native. Данные приложения обновляются в реальном времени за счет реализации соединения WebSocket на основе библиотеки Centrifuge. Поскольку библиотека Centrifuge-Android еще нестабильна, мы разработали собственную реализацию подключения к Centrifugo с помощью библиотеки Scarlet.
iOS App
Приложение iOS использует библиотеку SwiftCentrifuge для подключения к сокету, однако в несколько измененном виде. Мобильные приложения поддерживают интерфейс справа налево, поскольку они имеют арабскую локализацию. Мы следовали рекомендациям по материальному дизайну и использовали лучшие практики разработки пользовательского интерфейса. Это позволило нам добавить поддержку интерфейсов LTR, RTL и BiDirectional без каких-либо проблем и траты времени.
Результат
Команда Stfalcon с нуля разработала версию MVP для мобильных приложений iOS и Android, которая превзошла первоначальные ожидания клиента. Это стало возможным благодаря тому, что мы предоставляли клиенту свое видение и предложения по разработке продукта, обсуждали варианты и вместе выбирали лучшие решения. Кроме того, мы позаботились о целевой странице для привлечения трафика и внимания к сервису и продукту.
Команда проекта:
- Сергей
Проектный менеджер
- Антон Б.
Android разработчик
- Юля
Дизайнер
- Артем Г.
Back-end разработчик
- Евгений Аронов
IOS разработчик
- Юрий Шевчук
QA инженер
- Оксана М.
Account менеджер