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

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

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

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