Проекты
Конкурсные проекты

Граубергер Александр Сергеевич


Тип участника:  Физическое лицо
Полное наименование организации/физического лица/авторского или творческого коллектива:  Алтайский Государственный Университет
ФИО всех участников авторского/творческого коллектива:  Граубергер А.С, Рубцов Владислав, Ганибаев Р.С.
Идея и краткое описание ИТ-проекта: 

Идея проекта

StrideTrack — это приложение которое превращает смартфон в полноценный GPS-трекер и навигатор для бегунов и велосипедистов. Сервис сочетает в себе актуальные карты Yandex, интеллектуальную фильтрацию GPS-шумов и guided-навигацию, позволяя пользователям не только записывать тренировки, но и двигаться по заранее заданным маршрутам с обратной связью в реальном времени.

Краткое описание

StrideTrack — это картографический модуль мобильного приложения на Flutter, интегрированный с Yandex MapKit. Сервис предоставляет пользователям полный цикл работы с геоданными: от планирования маршрута до сохранения GPX-трека.

Ключевой функционал:

  • Интерактивная карта с поддержкой жестов, маркером текущей позиции и ориентацией по компасу.

  • Построение маршрутов (пешеходных и транспортных) через Yandex MapKit с поиском адресов и подсказками.

  • Запись GPS-треков в реальном времени с отрисовкой полилинии и расчётом метрик: дистанция, время, скорость, темп, калории, шаги, набор высоты.

  • Guided-навигация — ведение пользователя по заранее загруженному маршруту с индикатором прогресса, контролем отклонения и автозавершением.

  • Работа с GPX — импорт, отображение и экспорт маршрутов в формате GPX 1.1 с сохранением расширенных метаданных (sidecar JSON).

  • Автопауза — автоматическая приостановка записи при остановке движения.

  • Энергосбережение — приостановка GPS при сворачивании приложения или переключении вкладок.

Архитектура: сервис построен по принципам MVVM с элементами Clean Architecture, что изолирует бизнес-логику (фильтрация GPS, навигация) от картографического SDK и аппаратных сенсоров. Это делает код тестируемым и готовым к масштабированию.

Технологический стек: Flutter/Dart, Yandex MapKit, Geolocator, Flutter Compass, GPX, фильтр Калмана для подавления шумов GPS.

Целевая аудитория: спортсмены-любители (бегуны, велосипедисты), которые хотят отслеживать свои тренировки, планировать маршруты и получать навигационную поддержку в реальном времени.

Перечень решаемых задач: 
1 Отображение карты и геолокация Frontend
2 Построение маршрутов (Yandex MapKit) Frontend
3 Поиск адресов с подсказками Frontend
4 Запись GPS-трека с фильтрацией Frontend
5 Расчёт спортивных метрик Frontend
6 Guided-навигация Frontend
7 Работа с GPX (импорт/экспорт) Frontend
8 Ручная и автоматическая пауза Frontend
9 Запланированные тренировки Frontend
10 Энергосбережение и жизненный цикл Frontend
11 Аутентификация и авторизация Бэкенд
12 Синхронизация тренировок с облаком Бэкенд
13 Хранение истории тренировок (БД) Бэкенд
14 Социальные функции (лента, лайки, подписки) Бэкенд
15 Аналитика и агрегация статистики Бэкенд
16 Рейтинги и доски лидеров Бэкенд
17 Рекомендательная система маршрутов Бэкенд
18 Кеширование (Redis) Бэкенд
19 Административный API Бэкенд
20 Экспорт данных (GDPR) Бэкенд
21 Пуш-уведомления Бэкенд
22 Мониторинг и логирование DevOps
23 Масштабирование и балансировка DevOps
24 CI/CD и контейнеризация DevOps
Описание функциональных возможностей и элементов проекта:  Приложение умеет планировать маршруты, пользователь может создавать групповые чаты, общаться, делиться маршрутами. Есть возможность отслеживания статистики, по неделям, месяцам, годам. Есть социальная лента общества, реализована система сообществ, можно делится локациями. Приложение полностью отслеживает и записывает маршрут, считает кол-во потраченных калорий, пройденных шагов, 
Дата внедрения (в случае, если предполагается запуск проекта в эксплуатацию):  -
Используемые платформы, средства разработки: 

1. Платформы и целевые устройства

Платформа / Устройство Назначение
Android 12+ Основная целевая платформа мобильного приложения
iOS 14+ Вторичная целевая платформа (кросс-платформенность Flutter)
Сервер Linux (Ubuntu 22.04 LTS) Развёртывание бэкенд-сервисов, базы данных и кеша
VDSina Хостинг бэкенда, объектное хранилище для GPX-файлов
Docker / Kubernetes Контейнеризация и оркестрация микросервисов

2. Средства разработки (IDE и инструменты)


Инструмент Назначение
Android Studio (Koala / Ladybug) Основная IDE для разработки Flutter-приложения (эмулятор Android, отладка, профилирование)
Visual Studio Code Альтернативная IDE (с плагинами Flutter, Python, Docker)
Xcode (macOS) Сборка и подпись iOS-версии приложения
PyCharm Professional IDE для разработки бэкенда на Python
DBeaver / pgAdmin 4 Визуальный клиент для управления PostgreSQL
Postman / Insomnia Тестирование REST API и WebSocket-соединений
Git Система контроля версий
GitHub / GitLab Хостинг репозиториев, CI/CD и управление проектом
Docker Desktop Локальный запуск контейнеризованных сервисов
Kubernetes (minikube / kind) Локальная оркестрация контейнеров для тестирования
Prometheus + Grafana Мониторинг и визуализация метрик бэкенда
ELK Stack (Elasticsearch, Logstash, Kibana) Централизованное логирование


3. Мобильный клиент (Frontend) — Flutter

Фреймворк и язык


Технология Версия Назначение
Flutter 3.22+ Кроссплатформенный фреймворк для iOS/Android
Dart 3.4+ Язык программирования для Flutter

Основные пакеты и библиотеки

Пакет / Библиотека Версия Назначение
yandex_maps_mapkit 4.x Интеграция с Yandex MapKit (карты, маршрутизация, геокодирование)
geolocator 13.x Доступ к GPS-приёмнику, определение координат и разрешений
flutter_compass 1.x Получение азимута (компас) для ориентации маркера
permission_handler 12.x Запрос и проверка системных разрешений
path_provider 2.x Получение путей к локальным каталогам (для сохранения GPX)
xml 6.x Парсинг и генерация GPX-файлов
dio 5.x HTTP-клиент для отправки треков на бэкенд
retrofit 4.x Генерация типизированных API-клиентов (поверх Dio)
riverpod / flutter_bloc 2.x / 8.x Управление состоянием приложения (на выбор)
go_router 14.x Маршрутизация и навигация
shared_preferences 2.x Хранение локальных настроек (токен, настройки)
flutter_secure_storage 9.x Безопасное хранение JWT-токенов
connectivity_plus 6.x Мониторинг состояния сети (офлайн/онлайн)
device_info_plus 10.x Сбор информации об устройстве (для аналитики)


4. Бэкенд — Python

Язык и веб-фреймворк




Технология Версия Назначение
Python 3.12+ Основной язык программирования бэкенда
FastAPI 0.115+ Веб-фреймворк для создания REST API (высокая производительность, асинхронность, автогенерация OpenAPI)
Uvicorn 0.34+ ASGI-сервер для запуска FastAPI в продакшене
Gunicorn 23.x WSGI-сервер (опционально, для совместимости с некоторыми библиотеками)

Работа с базой данных (PostgreSQL + SQLAlchemy)

Технология Версия Назначение
PostgreSQL 16.x Основная реляционная база данных
SQLAlchemy 2.0+ ORM (Object-Relational Mapping) для работы с БД
Alembic 1.13+ Инструмент для управления миграциями схемы БД
asyncpg 0.30+ Асинхронный драйвер PostgreSQL для SQLAlchemy (поддержка async/await)
psycopg2-binary 2.9+ Синхронный драйвер PostgreSQL (для задач миграций)

Стоимость разработки системы:  657 344
Средний размер ежегодных затрат на эксплуатацию:  1 056 000
Перспективы развития:  1. Расширение функционала приложения за счёт добавления ИИ
2. Отсутствие аналогов с полностью бесплатным пользовательским режимо
Достижение поставленных целей: 

Достижение поставленных целей

Задача (из Введения) Результат Статус
1 Провести анализ картографического функционала существующих спортивных приложений и определить требования к модулю Проведён сравнительный анализ Strava, Nike Run Club, Komoot, Яндекс Карт. Сформулированы функциональные и нефункциональные требования  Выполнено
2 Обосновать выбор технологического стека Обоснован выбор Flutter, Yandex MapKit, Geolocator, GPX, фильтра Калмана. Проведено сравнение SDK Выполнено
3 Спроектировать архитектуру сервиса и модель его состояний Разработана четырёхуровневая архитектура (MVVM + Clean Architecture) и конечный автомат состояний  Выполнено
4 Реализовать интеграцию с Yandex MapKit и построение маршрутов Реализована инициализация SDK, коллекции объектов, маршрутизация (пеший/транспортный режимы), управление камерой Выполнено
5 Разработать алгоритмы записи, фильтрации GPS-треков и guided-навигации Реализован GpsTrackProcessor с фильтром Калмана (таблица 2.3) и RouteProgressTracker с проекцией на маршрут Выполнено
6 Обеспечить локальное сохранение тренировок в формате GPX Реализованы GeometryProvider (GPX 1.1) и WorkoutMetadata (sidecar JSON)  Выполнено
7 Провести тестирование сервиса и оценить соответствие требованиям Проведено функциональное тестирование 15 сценариев на реальном устройстве Оценены нефункциональные показатели  Выполнено

Актуальность, экономическая или социальная полезность: 

Ключевой фактор актуальности — в 2022–2024 годах ведущие мировые спортивные приложения прекратили официальную поддержку в России:

  • Strava и Nike Run Club удалены из российских сегментов App Store и Google Play .

  • Adidas Running прекратил работу в феврале 2024 года .

  • Российские пользователи потеряли доступ к накопленной многолетней статистике тренировок, любимым маршрутам и платным функциям .

«Пользователи хранили там ценную для себя информацию. Просто бах — и всё закрывается! К тому же многие сервисы имеют платные функции, и даже если пользоваться ими через VPN, нужно ещё решить проблему с оплатой» — Виктор Осокин, основатель российской платформы Simpla .

Эта ситуация создала острый рыночный спрос на отечественные аналоги спортивных трекеров, что подтверждается появлением российских проектов: «Бег. Начни бегать», Simpla, «На спорте», «Бег» от VK

Масштабируемость, способность к взаимодействию с другими системами, мобильность: 

1. Масштабируемость (Scalability)

1.1. Текущая клиентская часть (Flutter)




Аспект Реализация Оценка масштабируемости
Архитектура MVVM + Clean Architecture с разделением на Presentation, Domain, Data, MapKit Layer Высокая - замена SDK или источника GPS не требует переписывания бизнес-логики
Управление состоянием Централизованное состояние в MapScreenState Средняя - при росте числа экранов может потребоваться переход на Riverpod/Bloc для лучшей масштабируемости
Коллекции MapKit Три изолированные коллекции объектов (_userLocationCollection, _placemarksCollection, _routesCollection) Высокая - обновление одного слоя не перерисовывает всю карту
Обработка GPS Throttling UI (500 мс), фильтр Калмана, инкрементальное обновление полилинии Высокая - треки до 10 000+ точек обрабатываются без падения FPS
Кодовая база Модульная структура (features/map/, data/, core/map/) Высокая - легко добавлять новые режимы маршрутизации или типы активности
Пакетная изоляция Виджет карты вынесен в общий пакет common Высокая - переиспользование в других частях приложения

Обоснованность применяемых проектных решений: 

Обоснование:

  • Yandex MapKit обеспечивает наилучшую детализацию карт на территории РФ 

  • Поддерживает пешеходную и транспортную маршрутизацию через официальный пакет.

  • Соответствует российскому законодательству о геоданных (приоритет для коммерциализации в РФ).

  • Предоставляет Suggest API для поиска адресов с подсказками.

Оригинальность, новизна, отличие от аналогов либо отсутствие аналогов: 

Отличия от основных аналогов


Критерий StrideTrack Komoot Яндекс Карты (трекинг) Strava
Карты РФ Высокое качество (Yandex) Среднее (OSM) Высокое качество Низкое (OSM)
Guided-навигация Полноценная (прогресс, off-route) Полноценная Отсутствует Отсутствует
Фильтрация GPS Многоступенчатая (Kalman) Базовая Базовая Базовая
Спортивные метрики на карте Крупный шрифт для бега Ориентирован на туризм Минимальные Развитые, но карты OSM
GPX импорт/экспорт Полный цикл Полный цикл Нет Нет
Офлайн-карты Не реализовано Есть Есть Нет
Социальные функцииЕсть Есть Нет Есть (ключевая фича)

Гарантирую достоверность предоставленной в заявке информации. Подтверждаю, что организация не находится в состоянии ликвидации, банкротства, реорганизации (Только для организаций):  Да
Презентация проекта pdf:  Загрузить
Возврат к списку
нет доступа к комментариям Авторизоваться