ООО «Голден Ринг Ультра Трейл»
Спорт
Россия, Москва
IOS, Android
Декабрь 2024
Running Heroes Russia - команда профессионалов, которая организовывает самые массовые и уникальные забеги по пересеченной местности в России.
Масштабный ежегодный трейловый старт в Суздале, ночные рок-н-ролльные ультрамарафоны, уникальный забег на острове за полярным кругом, сложнейшие зимние гонки на 160 километров - это только малая часть того, что делает команда Running Heroes Russia.
Клиент хотел сделать мобильное приложение для участников своих стартов и их болельщиков.
Основные задачи - разработать решение по принципу "информация в кармане", которое позволит решать следующие задачи:
• Следить за новостями и получать актуальную информацию о проводимых мероприятиях.
• Просматривать и скачивать треки дистанций.
• Получать уведомления о прохождении участником контрольных точек, видеть информацию о темпе, времени и месте атлета, как в абсолютной, так и в возрастной категориях.
• Просматривать персональные результаты и фотографии с мероприятия.
Для реализации требуемого функционала мы предложили клиенту отойти от стандартного подхода и вместо двух нативных мобильных приложений для iOS и Android разработать кросс-платформенное решение на основе Kotlin Multiplatform (KMP), а в качестве back-end составляющей использовать сервисы Firebase.
Такой подход позволил добиться следующего:
• Сократить затраты на разработку приложений.
Большая часть кода пишется на языке Kotlin, который знаком всем Android-разработчикам.
• Реализовать UX, практически неотличимый от нативного для iOS и Android.
Kotlin Multiplatform позволяет реализовывать очень производительные приложения, которые сложно отличить от нативных по визуалу и быстродействию.
• С легкостью выдерживать пиковые нагрузки в момент проведения мероприятий.
Использование облачных сервисов Firebase позволяет не беспокоиться о нагрузках в дни проведения мероприятий и при этом существенно экономить на стоимости эксплуатации back-end составляющей в остальное время.
Провели первоначальный анализ требований, обсудили с клиентом возникшие вопросы, проработали ряд идей и решений.
По итогу выработали понимание, что приложение на старте будет не очень большим. Но при этом надо заранее заложить возможности для будущего развития и расширения функционала.
Проделали стандартные этапы с первоначальным прототипированием интерфейса и последующей отрисовкой дизайнов. Остановились на следующем наборе функционала:
• Новостной раздел с текстовым и медиа-контентом.
• Основной раздел с предстоящими и прошедшими мероприятиями, а также детальной информацией по каждому из них: дата и место проведения, программа мероприятия, фото и видео, информация о дистанциях (отображение трека на карте и возможность скачать/отправить gpx-трек на спортивные часы), различная полезная информация для участников и т.д.
• Отслеживание и получение уведомлений в режиме реального времени о прохождении участниками контрольных точек во время проведения забега. Такая функция очень полезна для болельщиков.
• Отображение личных результатов и фотографий с дистанции по итогам проведения мероприятия.
• Заложили возможность добавления полноценного личного кабинета участника в будущем.
После обсуждения возможных вариантов технической реализации, решили остановиться на использовании Kotlin Multiplatform (KMP) и разработать с помощью него кросс-платформенное приложение для iOS и Android.
Такой выбор был обусловлен следующим:
• Небольшой объем и сложность приложения, а также отсутствие комплексных анимаций и функционала, в которых кросс-платформа могла бы стать узким местом.
• Возможность писать код и использовать стек технологий, очень близкий к нативной Android-разработке. Это большое преимущество по сравнению с другими кросс-платформенными фреймворками, где для работы используются другие инструменты.
• Хороший уровень быстродействия Kotlin Multiplatform и его активное развитие.
Выбранное решение хорошо показало себя и полностью оправдало наши ожидания. Хотя мы и столкнулись с рядом сложностей, связанных с относительной молодостью фреймворка KMP. Например, по умолчанию для iOS нет поддержки жеста "назад" для навигации между экранами приложения. Такую возможность пришлось добавлять вручную.
Также пришлось решать стандартные задачи для любой кросс-платформенной разработки. Например, реализовывать платформенные решения для отображения Яндекс.Карт.
В качестве back-end мы решили использовать облачные сервисы Firebase: Firestore, Cloud Functions, Hosting, Messaging и некоторые другие.
Они прекрасно справляются со своей задачей в рамках разработанного решения: хранением данных, обработкой бизнес-логики, отправкой уведомлений пользователям.
А еще очень важно, что эти сервисы отлично масштабируются. Специфика проекта такова, что нагрузка очень неравномерна по времени. В дни проведения мероприятий могут быть тысячи одновременных пользователей, в то время как в остальное время их может быть на пару порядков меньше. И масштабируемые автоматически облачные решения подходят здесь как нельзя лучше.
Выпустили приложение как раз к началу мероприятия нашего клиента - сложнейшего зимнего ультрамарафона.
На следующий же день после выпуска приложением уже пользовалось несколько сотен человек одновременно. Как мы и ожидали, самой востребованной функцией оказалась возможность отслеживать прохождение дистанций участниками в режиме реального времени.
Проверка работы в боевых условиях оказалась успешной. Разумеется, были обнаружены и небольшие проблемы, которые мы оперативно исправили в дальнейших релизах.
Создали приложение для участников спортивных ультрамарафонов от Running Heroes Russia и их болельщиков. Помимо информационной и новостной составляющих, реализовали полезные и удобные сервисы для пользователей:
• Просмотр персональных результатов и фотографий;
• Отслеживание атлетов на дистанции в режиме реального времени в дни проведения соревнований;
Сейчас активно прорабатываем новые идеи и функционал вместе с клиентом. Планов по развитию продукта очень много. Уверенно движемся вперед и стараемся сделать лучшее в России приложение для трейлраннеров.
![]()
Иван Алырчиков
Руководитель IT-департамента
Благодаря нашему регулярному взаимодействию и общему взаимопониманию, разработчикам удалось полностью погрузиться в нужды атлетов и по итогу создать продукт, удобный и нашей специфической аудитории, и нам самим с точки зрения предоставления информации пользователям.
Сейчас такие основные функции, как общая информация о гонках и событиях, просмотр персональных фотографий атлетов со стартов и отслеживание участников на дистанции удобно собраны в одном месте и повышают общую удовлетворённость атлетов от участия в старте, что мы видим по итогу опроса участников старта в декабре.