Портфолио, проекты и кейсы Creative

Бэкенд для мобильных устройств




Создаем единую логику бэкенд-части, как для веб-продуктов, так и для мобильных приложений



Срок реализации – 6 месяцев.


Задачи


  1. Разработать бэкенд для мобильного приложения (агрегатор в секторе e-commerce)
  2. Интегрировать отображение объектов на карте
  3. Предусмотреть возможность масштабирования проекта


Стэк


Flutter


Решение

Масштабирование продукта


Отличий между бэкендом для веб-сайта и мобильного приложения, как таковых, нет. Например, в интернет-магазине отображается каталог с товарами - фотография, описание, цена, и т.д. Точно такие же данные в json-формате отдаются в мобильное приложение, и так же отображаются. Можно предусмотреть и различия - на сайт будут приходить какие-то дополнительные поля (например, страна-изготовитель, или состав продукта), а в мобильном приложении мы их отрезаем. Такую схему можно реализовать разными способами, например с помощью добавления ключа в запрос, по которому бэкенд будет идентифицировать источник обращения, и отдавать данные определенным образом.

Все это гарантирует клиенту возможность при необходимости масштабировать свой продукт. В частности, из площадки, которая работала исключительно через браузер создать мобильное приложение. То же самое работает и в обратную сторону. Во всех случаях серверная часть останется единой, и будет работать на оба канала.


Бэкенд для мобильного приложения


Специфичным для данного проекта оказалось использование формата ответа JSON-LD (linked data). При выполнении запроса, например какого-то товара из каталога, он отдает не сами поля со значениями параметров, а ссылка - где получить эти данные. Чтобы их получить, нужно отправить еще один запрос.

Такой вариант более оправдан при реализации в десктопном приложении, где нет проблем со стабильностью коннекта с Сетью. Все запросы уйдут и вернутся без потерь. Мобильное приложение подчас сталкивается с регулярными обрывами связи в силу места применения. Поэтому пришлось настраивать отслеживание корректности возврата ответов на запросы. Надежнее применять один запрос и один ответ, в котором содержатся все необходимые данные.


Кастомные карты координат


В рамках проекта требовался функционал по отображению некоторых точек на карте местности. Карты, как и любая дополнительная функциональность для Flutter, подключается через плагины. Отдельно были добавлены иконки, которые рисуются поверх карты, с привязкой к координатам. Кроме того, применили компонент Collapse, чтобы при уменьшении масштаба карты несколько иконок не слипались, и преобразовывались в одну с индикатором количества точек внутри.

Мы использовали картографическую платформу 2ГИС. Точно также можно работать и с картами от Google и Яндекс.



Реализовать серверную часть проекта мобильного приложения можно с использованием различных решений в зависимости от конкретных задач. Несомненный плюс для бизнеса в том, что написанный бэкенд можно будет доработать в будущем для развития проекта - создания новых приложений или сайтов.

Роман
Senior, mobile app developer


Mobile App Dart Flutter E-commerce