Что было реализовано
Главный экран (MainScreen)
Интеграция с Яндекс.Картами: отображение карты, на которой в реальном времени строится полилиния вашего маршрута.
Сбор GPS-координат через react-native-geolocation-service и (на Android)
Фильтрация точек по минимальному и максимальному порогу точности и по «телепортам» (отсечение скачков более 20 м).
Расчёт пройденной дистанции (алгоритм Haversine) и сожжённых калорий на основе веса пользователя.
Сохранение маршрута за день в AsyncStorage под ключом route-YYYY-MM-DD.
Прогресс-бар для ежедневных целей по дистанции и калориям, которые берутся из задач (Tasks).
Экран истории (HistoryScreen)
Календарь (react-native-calendars), на котором отмечены все даты, когда вы запускали трекинг.
По выбору даты загружается сохранённый в AsyncStorage маршрут, и на карте снова строится полилиния.
Вычисление дистанции и калорий для выбранного дня без пересчёта всего приложения.
Экран статистики (StatisticsScreen)
График (линейный чарt) за неделю, месяц или год:
За неделю: пройденные километры за каждый из последних 7 дней.
За месяц: дневные суммы километров с возможностью переключения между месяцами.
За год: помесячные итоги, с кэшем в AsyncStorage (stat-km-YYYY-MM).
Подсчёт и отображение количества выполненных задач (Tasks) за выбранный период.
Автоматическое кэширование и оптимизация длительных расчётов.
Экран задач (TasksScreen)
Управление списком задач-целей: дистанция, калории и произвольные.
Поддержка повтора — ежедневного и еженедельного, с автоматическим сбросом статуса в начале нового дня или недели.
Авто-отметка задач как «выполненных» при достижении статистики (сравнение с текущими значениями из todayStats).
CRUD-операции по задачам: добавление новых (с генерацией UUID), переключение статуса и удаление.
Экран настроек (SettingsScreen)
Включение/отключение отображения «всех маршрутов» (старых треков) на главной карте.
Изменение пользовательского веса (для расчёта калорий), целевых дистанции и калорий.
Возможность удаления маршрута за текущий день.
Архитектура и навигация (App.tsx)
Настроен стек-навигации через @react-navigation/native-stack.
Плавный переход между экранами без лишних заголовков там, где это не нужно.
Приложение позволяет пользователю не только отслеживать и сохранять свои маршруты в реальном времени, но и анализировать историю, строить статистику за разные периоды, а также ставить и автоматически выполнять цели по дистанции и сжиганию калорий. Всё хранится локально в AsyncStorage, а визуализация — на Яндекс.Картах и через настраиваемые чарты.