![](https://habrastorage.org/webt/3p/j2/mm/3pj2mmnjwmqnog3cift0ayur5lu.png)
У нас был GitHub, DockerHub, VisualParadigm и целое множество мессенджеров всех цветов и фасонов, а также Sails.js, MongoDB и Trello. Не то чтобы это был необходимый запас для разработки, но если начал делать модно, стильно, молодёжно, то становится трудно остановиться. Единственное, что вызывало у меня опасение — это мобильное приложение. Нет ничего более беспомощного, безответственного и порочного, чем кроссплатформенное мобильное приложение. Я знал, что рано или поздно мы перейдем и на эту дрянь.
Мы занимаемся автоматизацией (если не сказать страшного, “уберизацией”), рынка ритуальных услуг с 2016 года.
В августе 2016 года, впервые в России, а может и в мире, заказ на ритуальные услуги был оформлен в электронном виде. И за 2 года мы прошли путь по внедрению в этот непростой бизнес самых передовых технологий, которые успешно используются в других отраслях: интернет-эквайринг, он-лайн кассы, создание карт с помощью съёмки с квадракоптеров, он-лайн бронирование, смс-оповещения клиентов и т.п.
Фактически, мы создали ERP B2B систему для ритуального бизнеса, который объединяет ритуальных агентов, поставщиков товаров, подрядчиков по оказанию услуг на кладбище и в крематории, менеджеров, бухгалтеров, с возможностью отслеживания исполнения заказа в реальном времени.
Основной стек технологий — это Sails.js + MongoDB + Webix, а также маленько PostgreSQL, всё это упаковано в десяток докер-контейнеров и обеспечивает работу восьми ролей пользователей 24х7. Ну и Amazon Cloudfront для доставки тайлов карт и картинок, и Amazon SNS для оповещений. Вообщем, настоящий стартап.
Одна из ролей в нашей системе — это роль мобильного агента. С самого начала мы создавали для неё веб-интерфейс, адаптированный для смартфонов. Но как ни крути, никакой веб-интерфейс не сравнится с нейтивом по удобству и отзывчивости. Были постоянные баги: то что-то непрогрузилось, на iPhone 5S что-то не влезает, то на андроиде вылезает. При том, что задачи, на первый взгляд, достаточно простые: заполнить несколько форм и выбрать товары/услуги и отправить заказ.
Итак, что мы хотели:
- мобильное приложение
- кроссплатформенное (у нас ровно ⅓ яблочных клиентов), и мы не хотели тратить ресурсы на две независимые разработки под Android / iOS
Естественно, вначале стали смотреть различные обёртки к веб-морде: PhoneGap/Cordova/Ionic. (подробнее о них тут). Но WebView — это WebView, медленно и печально.
Xamarin? Но перелезать на .Net & C# совсем не было желания. Да и по слухам, с UI не всё гладко на разных платформах.
Что же остаётся? Flutter.io!
- пишешь на Dart (какое удовольствие после JS) — компилишь в нейтивный код
- hot reload — пишешь и сразу видишь результат
- интеграция с Google Firebase из коробки
- куча пакетов на pub
- плагины для основных IDE и текстовых редакторов
- при желании, можно делать вставки на нейтивном коде для платформ
- в нашем случае — действительно один код для всех платформ! (только иконки отличаются)
На первом этапе мы решили запустить приложения вообще без изменения API на стороне сервера, и наше приложение — повторяет по функционалу всё то, что можно сделать и в веб-интерфейсе, но быстрее и проще для пользователя. При этом вся информация зеркально отображается и в веб-интерфейсе и в мобильном приложении.
![](https://habrastorage.org/webt/f-/90/cw/f-90cwim30pxbdzxcdsugq1qofa.png)
было-стало
![](https://habrastorage.org/webt/ou/it/yr/ouityrhqycg18zf9fgsvtiz7on4.png)
было-стало
В планах:
- работа в офлайне в т.ч. с картами
- расчеты и оплаты с агентами в самом приложении
- живой чат с менеджерами и колл-центром
Итого: Flutter’у жить и на кладбище и в крематории!