EN RU
Напишите нам
Следующий проект

TaskRunner app

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

Задача

TaskRunner — это онлайн-платформа для заказа услуг. В системе есть две основные роли: Runner/Раннер (исполнитель) и Poster/Постер (заказчик услуг). Постеры создают задание с описанием того, что необходимо сделать, и публикуют его на платформе TaskRunner. Раннеры отправляют заявки на выполнение задания, Постер выбирает исполнителя и вносит оплату за работу. После того, как Постер и Раннер подтвердят завершение задания, последний получает оплату. Также предусмотрена административная роль для управления и контроля системы.

Платформа TaskRunner состоит из:

  • Мобильного приложения для Постеров (для платформ Android и iOS)
  • Мобильное приложение для Раннеров (на платформах Android и iOS)
  • Панель администратора (веб)

— Мы использовали подход, когда для двух разных приложений общая бизнес логика описана в едином модуле. Это позволило ускорить разработку и упростить поддержку приложений в будущем.

Антон Бевза, Android разработчик

Решение

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

Backend был реализован на платформе ASP.NET, в качестве СУБД использовался Microsoft SQL Server. В связи с высокой требовательностью данных продуктов к ресурсам общая производительность системы была низкой. Плюс к этому, — высокие эксплуатационные расходы продуктов Microsoft. Новую систему было решено разрабатывать на платформе Symfony, и использовать PostgreSQL в качестве СУБД. Мы написали несколько дополнительных утилит для переноса данных с Microsoft SQL Server на PostgreSQL.

Старые мобильные приложения были реализованы с помощью технологий Cordova и React. Так как главные требования к новым приложениям являлись стабильность и скорость работы, нашими специалистами было решено разработать нативные iOS и Android приложения.

Технологии

Backend реализует REST API для обмена данными с клиентскими мобильными приложениями, интегрирован с несколькими внешними сервисами для выполнения ряда операций — оплата заказов, отправка email, SMS и PUSH-уведомлений. Работа в среде Kubernetes повышает надежность и отказоустойчивость серверной части продукта и системы в целом.

Android приложения соблюдают принципы Clean Architecture. Проект разделен на четыре независимых модуля: Poster, Runner, Domain, Data. Domain и Data модули общие для приложений Постера и Раннера, это позволило избавиться от дублирования бизнес логики схожей в двух приложениях что в итоге значительно сэкономило время разработки.

В версии iOS мы использовали архитектуру как на Android, 4 модуля: Domain, Data, Runner Presentation и Poster Presentation. Для привязки данных мы применили RxSwift, так как для слоя Presentation была использована архитектура MVVM. Swinject, библиотека Dependency Injection, была использована нами для инициализации новый модулей. Это значительно упрощает их создание и повторное использование.

Для систем подобного типа очень важно иметь возможность анализировать действия пользователей. Для этого мы интегрировали два сервиса сбора аналитики — AppsFlyer и Segment.
Также для обеспечения обратной связи и реализации возможности пользователям обратится в тех. поддержу и получить немедленный ответ внутри приложения, мы интегрировали сервис Intercom.

Результат

Мы переделали с нуля все компоненты системы, улучшили стабильность, скорость и удобство работы с приложениями и админ панелью, при этом сохранили 100% существующих пользователей платформы.

Над проектом работали:

  • Александр Арбузов Александр Арбузов

    Проектный менеджер

  • Татьяна Иваница Татьяна Иваница

    Дизайнер

  • Павел Попов Павел Попов

    Backend разработчик

  • Антон Бевза Антон Бевза

    Руководитель отдела Mobile

  • Андрей Жумела Андрей Жумела

    Android разработчик

  • Александр Франков Александр Франков

    IOS разработчик

  • Александра Битюк Александра Битюк

    QA инженер

Похожие проекты