приложения
для экосистемы
детских устройств

flutter
python
tornado
janus
технологии
менеджер проекта
QA
flutter разработчик
python разработчик
команда
февраль 2022 –
январь 2024
срок
Содержание
Вводные данные
Клиент
AIMOTO — российская компания, которая уже 10 лет разрабатывает умные гаджеты и сервисы для всей семьи. В 2019 году, согласно исследованию аналитического агентства Counterpoint Research, компания заняла десятое место в рейтинге ведущих мировых брендов, производящих детские умные часы.
Проблема
У клиента уже был готовый продукт с клиентской базой и сложной, устаревшей кодовой базой, которую создавали разные команды разработчиков. В коде было много ошибок, которые нам нужно было исправить.

Также клиент предоставил нам полуготовое мобильное приложение на Flutter, которое нужно было доработать, а также реализовать новые бизнес-требования.

Общие проблемы проекта:
  • Большой технический долг: Низкокачественная кодовая база, множество ошибок и отсутствие единой архитектуры.
  • Устаревшие технологии и инструменты: Привязка к конкретным не самым удобным инструментам.
  • Проблемы с репозиторием: Беспорядок в репозитории и в миграциях SQLAlchemy.
  • Сложности локальной разработки: Трудности с развертыванием проекта на локальной машине.
  • Нерентабельный глобальный рефакторинг: из-за большого объема кода и отсутствия общей архитектуры.
Задача
Перед нашей командой стояла задача обеспечить стабильную работу уже имеющегося мобильного приложения и разработать новые продукты внутри экосистемы Aimoto.
Процесс работы
1.Проектирование
В работе над проектом с нашей стороны участвовали четыре человека: один Python разработчик, один разработчик на Flutter, менеджер проекта и тестировщик.

Для разработки серверной части было решено продолжить использовать Python, так как проект был написан на этом языке. Для разработки клиентской части был выбран Flutter по той-же причине.
2.Разработка
Разработка разделялась на итерации, в ходе которых нужно было реализовать определенный функционал и/или пофиксить баги. До начала спринта все задачи на разработку определялись совместно с клиентом.

Можно выделить несколько основных этапов работы над приложением:
  • Исправление проблем легаси приложения.
  • Осуществление миграции механизмов оплаты с Google Play и App Store на Yookassa.
  • Доработа мобильного приложения Aimoto Connect.
  • Реализация звонков с часов на Aimoto Connect и обратно.
  • Верстка и инициализация Aimoto Kids.
  • Реализация работы в фоновом режиме Aimoto Kids.
Доработка Aimoto Connect
Aimoto Connect - это умные часы, которые оснащены функциями:
  • встроенный микрофон и динамик
  • GPS-трекер
  • кнопка SOS
  • мониторинг здоровья
  • напоминания о приёме лекарств
  • и др.

Данные часы предназначены для взрослых и пожилых людей, чтобы их родственники или опекуны могли отслеживать разные показания владельца часов через приложение Aimoto Connect.
Реализация звонков с часов на Aimoto Connect и обратно.
Одной из самых длительных задач была настройка обмена звонками между умными часами для детей и приложением для родителей Aimoto Connect.

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

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

Также сами устройства (умные часы) были физически привязаны к использованию именно этой технологии, поэтому переход на другую технологию был невозможен.
В процессе работы над задачей:
  • Мы многократно перенастраивали Janus, чтобы добиться стабильной работы. Сервер управлял созданием и завершением сессий, а также передачей учетных данных и параметров сессии между устройствами.
  • Переписали механизм взаимодействия с Janus на стороне приложения, обеспечив корректную работу звонков.
  • Для реализации звонков мы использовали библиотеку flutter_callkit_incoming, которая предоставляет интерфейс для входящих звонков, аналогичный системному приложению телефона.
  • Периодически возникали ошибки, связанные с соединением и передачей данных, которые было сложно отладить из-за сложности взаимодействия с Janus.
Несмотря на исходные трудности с Janus WebRTC, в конечном итоге мы смогли настроить и оптимизировать систему до уровня, обеспечивающего удовлетворительную работу. Однако, проект потребовал постоянного внимания и доработок из-за возникающих проблем.
Доработка Aimoto Kids
Aimoto Kids оснащены схожим функционалом:
  • GPS-трекер
  • кнопка SOS
  • совершение и приём звонков
  • геозоны
  • камера
  • будильник
  • напоминания.

Данные часы предназначены для детей, управление происходит через приложение Aimoto Kids App.
Реализация работы в фоновом режиме Aimoto Kids.
Для того чтобы приложение работало в фоновом режиме, необходимо было обеспечить постоянный обмен данными о местоположении. Это позволило приложению продолжать функционировать и обновлять информацию о местонахождении пользователя, даже когда экран свернут или когда пользователь работает с другими приложениями.

Однако мы не смогли найти готовое решение на Flutter, которое бы полностью подходило для нашего приложения. Поэтому нам пришлось использовать библиотеку carp_background_location, которая выполняет схожие функции, и адаптировать её под требования нашего приложения.
Результаты
За шесть месяцев мы смогли успешно доработать и улучшить мобильное приложение Aimoto, обеспечив стабильную работу системы и реализовав новый функционал.
Были решены проблемы с техническим долгом и улучшена кодовая база. В результате клиент получил обновленное и функциональное мобильное приложение, готовое к использованию и дальнейшему развитию.
В настоящий момент мы продолжаем сотрудничество с клиентом, расширяя функционал приложения и добавляя новые возможности.
«Мы работаем с командой по модели T&M, для нас это идеальная система в нашем продукте, получилось хорошее соотношение цена/качество. Мы смогли запустить MVP для новой поставки за пару месяцев и продолжаем сотрудничество с командой»
Дмитрий Н.
CTO, Aimoto
мобильное приложение
для управления цифровыми приборами
design
flutter
python
ble
wi-fi
подробнее
Приложение для Сборки заказов на маркетплейсы через ТСД и смартфон
flutter
kotlin
ble
подробнее
приложение
для Отслеживания глюкозы
в реальном времени
flutter
ble
подробнее
flutter
Приложение
для обогревателя, дающего тепло во время майнинга
подробнее