ExtraETF — мобильная платформа для анализа ETF и фондового рынка с инструментами для отслеживания портфеля и исследования рынка. В центре проекта — обновления в реальном времени, удобная аутентификация и премиум-функции по подписке.

Онбординг

Онбординг

Страница новостей

Страница новостей

Страница тем

Страница тем

Статья

Статья

Страница акций

Страница акций

Детали акций

Детали акций

Задача

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

Наш подход

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

Для живых обновлений цен мы написали -сервис на Go, который транслирует рыночные данные и веб-, и мобильным клиентам. Модель конкурентности Go и легковесные горутины держат тысячи одновременных WebSocket-соединений при скромном расходе ресурсов.

Технические достижения

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

WebSocket-сервис на Go хорошо показал себя в продакшене: обновления цен доходили до клиентов с низкой задержкой даже по мере роста пользовательской базы, а серверы оставались дешёвыми в эксплуатации.

Интеграция нативных функций платформы — от Apple и Google, push-уведомления, — прошла гладко благодаря экосистеме плагинов Flutter: приложение ощущается нативным на каждой платформе, не теряя преимуществ общей кодовой базы.

Влияние на бизнес

Технологические решения напрямую отразились на бизнес-результатах:

  • Шесть месяцев от старта проекта до выхода в оба магазина приложений — с паритетом функций с первого дня: без запуска «сначала iOS» и без платформы, догоняющей другую.
  • сократилось примерно на 40% по сравнению с двумя параллельными нативными разработками — эта цифра получается сама собой, когда за одну и ту же работу перестают платить дважды.
  • Около 99% мобильного кода — общие для iOS и Android; платформенная часть — несколько сотен строк нативной «прослойки» для биллинга, OAuth и push-уведомлений.
  • Весь мобильный стек ведёт одна инженерная команда, поэтому расходы на поддержку не выросли — а две нативные команды тянули бы каждая свой цикл обновлений.

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

Ключевые функции

Push-уведомления

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

Аутентификация и социальный вход

Вход через OAuth от Apple и Google — безопасная аутентификация в одно касание. Регистрация становится проще, а за безопасность аккаунта отвечают доверенные провайдеры идентификации.

Deep Linking

Universal Links и App Links ведут из веб-контента, email-кампаний и социальных сетей прямо на нужные экраны приложения. Пользователи могут делиться друг с другом конкретными ETF, портфелями и рыночной аналитикой.

Интерактивные графики

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

Поддержка тем

Тёмная и светлая темы следуют предпочтениям пользователя и системным настройкам, так что приложением комфортно пользоваться при любом освещении. Дизайн-система сохраняет согласованность и читаемость в обеих темах.

Управление подписками

Премиум-функции продаются через встроенные покупки, а подписками пользователь управляет привычным способом — через App Store и Google Play. Система обрабатывает пробные периоды, тарифы подписки и восстановление покупок на разных устройствах.

FAQ

ExtraETF — мобильное приложение для анализа ETF и фондового рынка, созданное для Isarvest GmbH: рыночные данные в реальном времени, интерактивные графики, отслеживание портфеля и премиум-функции по подписке на iOS и Android. Мобильную часть мы построили на Flutter, а слой данных реального времени — на WebSocket-сервисе на Go.
Одной команде нужно было выпускать одни и те же функции на iOS и Android в сжатые сроки, а приложению с финансовыми графиками — полностью распоряжаться своими пикселями: настоящий график — это кастомная отрисовка, а не стандартный UI-виджет. Flutter даёт и то и другое: единую кодовую базу на Dart и холст для прямой отрисовки. В готовом приложении около 99% мобильного кода общие для обеих платформ, а нативной «прослойки» для биллинга, OAuth и push — всего несколько сотен строк.
WebSocket-сервис на Go транслирует живые цены веб- и мобильным клиентам, а горутины позволяют держать тысячи одновременных соединений при скромном расходе ресурсов. Обновления агрегируются ещё на сервере до стабильного темпа — примерно одно обновление на инструмент в секунду, ровно столько, сколько нужно человеку, следящему за ценой. Это сохраняет низкую задержку и разумную нагрузку на процессор и трафик клиентов по мере роста аудитории.
Шесть месяцев от старта до запуска в App Store и Google Play — с паритетом функций между платформами с первого дня. По сравнению с двумя параллельными нативными разработками время выхода на рынок сократилось примерно на 40%: бизнес-логика, графики и экраны писались один раз, а не дважды.
Да — ExtraETF по замыслу насыщен графиками: несколько таймфреймов, технические индикаторы, инструменты сравнения. Flutter сам отрисовывает каждый пиксель, поэтому код графиков работает одинаково на обеих платформах, а вынесение тяжёлых геометрических расчётов из фазы отрисовки сохраняет плавность взаимодействия в рамках бюджета кадра 16,6 мс даже на больших наборах данных.

ExtraETF создан на Flutter и Go в рамках нашей услуги разработки на Flutter.

Инженерный разбор — как WebSocket-сервис на Go веером рассылает рыночные данные в реальном времени тысячам клиентов и как графики держат 60fps во Flutter — читайте в статье Как мы построили финтех-приложение реального времени на Flutter и Go. ExtraETF — референсный проект нашей практики разработки финтех-приложений.