Разработка на Flutter: MVP аграрного маркетплейса
За 5 лет Flutter стал популярным языком для кроссплатформенной разработки. Связано это с его технической составляющей: удобная среда обеспечивает скорость разработки и хороший пользовательский опыт с различными анимациями, плавными переходами и т.д. Так, можно создавать мобильное приложение на уровне нативных и затрачивать на это ресурсов меньше на 20–50%. К тому же во Flutter сразу предусмотрена адаптация дизайна под веб- и десктоп-приложения.
Кроссплатформенные мобильные фреймворки, используемые разработчиками по всему миру (2019–2022). Источник
Расскажем на примере, как реализовали MVP маркетплейса на Flutter с нуля.
Задача
Создать универсальное IT-решение для аграрного маркетплейса с интуитивно понятной панелью объявлений и простым поиском. Это позволит объединить в одном мобильном приложении все предложения аграрного рынка.
Вводные данные: идея и подтвержденная «боль» от участников рынка
Аграрии используют многочисленные чаты в мессенджерах для обмена объявлениями о покупке или продаже сельхозпродукции. Однако поиск нужных товаров зачастую занимает большое количество времени. На основе анализа рынка наш клиент решил упростить этот процесс с помощью IT.
Почему выбрали Flutter
При выборе технологии разработки было важно, что клиент создавал с нуля не просто мобильное приложение, но и сам бизнес-продукт. Веб-решения у него также не было. Благодаря своей гибкости и простоте Flutter подходит для быстрой реализации прототипов ПО и экспериментов с различными интерфейсами и функциями: как для запуска, так и для дальнейшего масштабирования.
На выбор в пользу Flutter также оказали влияние и другие факторы.
Экономия в реализации. Если бы мы выбрали нативную разработку, нам бы потребовалось две команды для iOS и Android. И обеими надо управлять. При этом идентичных приложений мы бы не получили. Разработку в этом случае можно сравнить с написанием сочинения «Как я провел лето»: два закадычных друга по одному и тому же плану выдадут разный результат, хоть и были все время вместе. А на Flutter одна кодовая база, дизайн-система Material Design обеспечивает согласованность и единообразие пользовательского интерфейса на всех устройствах, что упрощает дизайн и тестирование приложений.
Часто при нативной разработке бизнес реализовывает фичи последовательно: сначала на одной платформе, далее происходит интеграция с бэкендом, а потом уже на другой. Это помогает сэкономить время на отладке интеграции мобильного приложения и бэкенд. На флаттере такой проблемы даже не возникает, так как у нас один проект.
То есть разработка, интеграция с бэком, дизайн и тестирование нужны «в одном экземпляре». Конечно, это экономит время и деньги.
Это нам и было нужно. Не было смысла в удвоенных тратах, когда у клиента еще не было «наработанной» аудитории, а ее предпочтения только предстояло выяснить.
К тому же, если приложение заблокируют на iOS, заказчик не потеряет деньги и не выбросит код в мусорку.
Ограничения Flutter не касались продукта заказчика. Теоретически на Flutter можно решать почти любые задачи за некоторым исключением:
- Он не подходит для всего, что связано с видеопотоками и перфомансом. Сюда относятся игры, AR, VR, плееры и т.п.
- Также нельзя реализовать продукты, где требуется ручное управление памятью, например, Photoshop.
- Фреймворк не рассчитан на мега-нагрузку, которая происходит если аудитория очень широкая, как в Ozon, например.
Но мы понимали, что любой вариант масштабирования продукта лежит за гранью этих ограничений. Аграрный маркетплейс – не игра со сложным сюжетом и графикой. Да и мега-нагрузка нам не грозила: вряд ли все россияне станут аграриями.
Как развивали идею заказчика
На старте мы подключились к проекту как выделенная команда: аккаунт-менеджер, Backend-, Flutter-разработчики и дизайнер. Со стороны клиента взаимодействовали с продакт-оунером.
Выяснили, что на первом этапе необходимо сформировать техническое задание для реализации продукта.
Опираясь на наш опыт, для ускорения процессов мы предложили взять управление на себя – и клиент нас в этом поддержал. В результате к задаче подключились проектный менеджер и аналитик.
Мы сформировали список наиболее необходимых функций для реализации MVP-версии:
- аутентификация через сервис заказчика,
- профиль пользователя и организации,
- сделки,
- поиск по ключевым словам,
- push-сообщения,
- аналитика (firebase).
Решение
Сделки – основная функция приложения – совершаются в чатах. Для этой задачи клиент выбрал протокол Xmpp, поэтому наши Flutter-разработчики обратились к библиотеке Xmpp_stone. Чтобы пользователям было максимально удобно договариваться о сделках, мы также реализовали отдельные функции, которые изначально не были предусмотрены в протоколе Xmpp. Среди них: поддержка истории сообщений, групповых чатов и функция обмена файлами (фото, документы).
Для авторизации задействовали сервис заказчика, с которым при помощи проксирования запросов интегрировали мобильное приложение. У каждого физического лица и/или организации есть профиль в системе и рейтинг, значение которого зависит от количества удачных сделок. С его помощью продавцы и покупатели могут определить наиболее надежных партнеров.
Также мы разработали поиск по ключевым словам, категории, рейтингу и региону, что позволит пользователям легко находить друг друга.
Для развития MVP мы подключили аналитику Firebase, которая поможет заказчику построить карту активности пользователя – выяснить, какие функции используются чаще, что следует доработать и чем дополнить.
Результат
За 6 месяцев создали MVP аграрного маркетплейса: продукт готов к выходу на рынок и рассчитан на 5 тысяч активных пользователей. Конечные пользователи смогут покупать и продавать разнообразную сельхозпродукцию, а заказчик – своевременно модифицировать приложение.
Flutter – про гибкость и адаптивность
Он предоставляет множество инструментов и библиотек для создания адаптивных и гибких интерфейсов, которые могут быть легко настроены под различные устройства и разрешения экранов. Это всегда является плюсом, а в случае запуска продукта позволяет избежать лишних затрат.
Например, заказчики также стали обращаться к нам для создания сайтов на Flutter. В этом случае можно переиспользовать часть кода для десктоп- и мобильных приложений. Кроме того, зачем создавать три приложения для Linux, Windows и macOS, когда можно сделать одно? Аналогично и для мобильных ОС. Сейчас Flutter доступен и для встроенных устройств: часы, браслеты.
Такая согласованность пользовательского интерфейса упрощает разработку и делает продукт более привлекательным для пользователей, которые привыкли применять различные устройства для получения услуги.
Смотрите больше кейсов по мобильной разработке на iOS и Android.