Медицинское приложение для стартапа с использованием Flutter и Dart

June 2020

Evrone хорош как в создании MVP для стартапов, так и в разработке масштабных систем со сложной архитектурой и большой нагрузкой. Специалисты Evrone всегда начеку: мы мониторим новые технологии, выбираем из них перспективные и добавляем в наш стек. В статье рассказываем о том, как при разработке приложения для записи бесед с врачом мы добавили в наш арсенал Flutter и язык Dart.

Задача

Клиент Evrone, Дэвид Уикли, «ветеран» Силиконовой Долины. Он имеет более чем 5-летний технический опыт работы в качестве продакт-менеджера в Google и Facebook, ментора стартапа, отмеченного наградами, а также основателя и члена совета директоров Hacker Dojo. Он придумал стартап: приложение для телефонов, улучшающее процесс коммуникации между доктором и пациентом. Идея сервиса родилась из жизненных обстоятельств.

Его отец тяжело заболел. Данных о способах и видах лечения было чересчур много. Стараясь не потеряться в них, семья делала аудиозаписи всех консультаций с медицинскими специалистами. Они были разосланы близким и родным, чтобы каждый член семьи мог участвовать в выборе метода лечения. Семья превратилась в «команду здоровья», и это помогло справиться с трудной ситуацией. И здесь наш клиент увидел возможность: оптимизировать эти процессы в мобильном приложении.

Очень сложно моментально принять решение при коммуникации с доктором, понять все термины и мелкие детали, запомнить советы и рекомендации и донести всё это до родных, ничего не перепутав. Такие трудности испытывали многие, не только наш заказчик. Наш клиент хотел помочь своей семье и каждому, кто оказался в схожей ситуации. Именно для этого и был разработан Medcorder.

Medcorder app

Решение

Наш план состоял из трёх пунктов: концепт, дизайн, минимально жизнеспособный продукт. Вместе с клиентом решили взять за основу классические технологии Google: хостинг Google Storagе, облачные сервисы Google Cloud, распознавание речи Google Speech Recognition и бэкэнд Google Firebase. К ним добавили Google Flutter — фреймворк для создания кроссплатформенных приложений.

Medcorder logoMedcorder app logo
medcorder design

История версий

Первый минимально жизнеспособный продукт напоминал блокнот, где можно было записывать разговоры с врачом и получать их расшифровку, оставлять комментарии и публиковать фотографии — например, рецептов или результатов анализов.

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

Сейчас Evrone работает над новой версией приложения.

Medcorder design
Medcorder tabletMedcorder mobile app

Flutter — первые шаги

Flutter — это новый open-source фреймворк от компании Google, предназначенный для разработки кроссплатформенных приложений одновременно и под Android, и под iOS. Разработка во Flutter идёт на языке Dart. Благодаря компиляции Dart в бинарный код, написанные на нём проекты отличаются производительностью и эффективностью.

До Medcorder Evrone уже использовал кроссплатформенные платформы, а именно React Native. Поскольку для нашего клиента в приоритете был быстрый запуск MVP и доступность внесения изменений, мы решили, что этот фреймворк отлчино подойдёт.

К началу работы Flutter был в стадии начальной разработки (Pre-alpha), что могло усложнить процесс создания приложения. Но мы уже успели вдохновиться новой платформой и её возможностями, поэтому решились на риски.

Параллельно с нашей работой над Medcorder, Google развивали Flutter. Фреймворк расширялся очень быстро, и сохранять инструментарий актуальным стало дополнительным вызовом. Нам помогло то, что Google стремились облегчить вход в технологию, поэтому тщательно проработали документацию фреймворка и ресурсы для программистов.

Они подготовили отдельные руководства под самые популярные специализации: Flutter для Android и iOS-разработчиков, Flutter для веб-разработчиков, для специалистов по React Native, для работающих на Xamarin.Forms. Было легко увидеть закономерности и перестроиться на новую технологию.

За то время, что мы работали над Medcorder, Flutter развился до стадии Stable release. Это произошло в декабре 2018 года Обновляться до новых версий фреймворка было непросто. Здесь помог наш опыт разработки нативных приложений — так как часть сложностей можно было решить, лишь понимая на глубоком уровне CocoaPods для iOS и Grade для Android.

Дизайн

­По умолчанию фреймворк содержит два вида интерфейса виджетов: Cupertino Widgets (в стиле Apple) и Material Design Widgets. К нашему прототипу больше подходил Material, его и взяли за основу.

Flutter позволяет создавать и собственные UI. Спустя три недели работы с Flutter мы выяснили, что реализация UI занимает очень мало времени, за исключением разве что узкоспециализированных вещей вроде кастомного скроллинга.

Приложение при этом выглядит нативным, что даёт возможность не прорабатывать повторно пользовательские сценарии. При этом в случае необходимости можно спроектировать отдельный интерфейс для iOS и отдельный для Android.

Open-source

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

При старте разработки Medcorder во Flutter не существовало модулей для проигрывания или записи аудиофайлов. Мы написали собственный — на Objective C для iOS и Java для Android. Сегодня любой желающий может использовать наш Custom Audio Plugin.

Medcorder imageMedcorder image

Перспективы Flutter

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

Вот, чем силён Flutter:

  • простая интеграция с сервисами от Google;
  • высокая скорость работы приложений за счет быстрого рендеринга;
  • мощный инструментарий для программистов на базе Visual Studio Code и Android Studio;
  • общая кодовая база, что позволяет вносить правки одновременно и в iOS и в Android;
  • подробная документация;
  • одинаковое отображение проекта на обеих платформах.

По задумке авторов Flutter с помощью плагинов работает со звуком, управляет bluetooth или контактами, отправляет SMS. Это специфические для iOS или Android задачи, для которых потребуется написать свой плагин или найти готовый. При этом количество нерешенных задач постоянно снижается: сообщество Flutter растёт и постоянно публикует новые инструменты.

medcorder picture
Medcorder app developers

Результат

В июне 2018, приложение было опубликовано для бесплатной загрузки и использования. Medcorder стал настолько успешным, что основатель оставил свою работу в Google, чтобы сфокусироваться на дальнейшей разработке приложения, которое получило инвестиции в размере $2.5 млн. Проблемы со здоровьем могут быть трудными для пациентов и их семей, но Medcorder облегчает эту задачу, помогая лучше понять варианты лечения и принять более взвешенные решения.

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

medcorder thanks
За прошедший год я научился многому, работая с Evrone, изучая новые кроссплатформенные фреймворки, такие как Flutter (в том числе предоставляя модуль аудиозаписи open-source сообществу), язык дизайна и потоки. Мы решили использовать бэкэнд Firebase с API распознавания речи Google. Команда Evrone познакомила меня с широким спектром инструментов  как Trello, Zeplin, Loom, Marvel, InVision и другими.
Дэвид Уикли
CEO, Medcorder.com
Будем на связи
Прикрепить файл
Максимальный размер файла: 2 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.