# BalDav Персональный трекер здоровья и физической активности. ## Возможности - **Дневник питания** — 13480 продуктов из магазинов (Магнит, 5ка, KDV) + база ИОН с микронутриентами. Рецепты с учётом термообработки (потери витаминов при варке/жарке). Единицы измерения (штуки, ложки, стаканы). Ввод количества формулами (4*30, 300+50). - **GPS трекинг** — запись маршрутов на велосипеде/пешком в фоне. Оффлайн карты (Leaflet + IndexedDB кэш). Импорт GPX/FTB (FitoTrack). Экспорт GPX. Фильтр altitude outlier'ов и GPS-залипаний. Вращение карты по компасу (leaflet-rotate). Ландшафтный режим (CSS rotation + панель справа). Dead reckoning при потере GPS (гироскоп + акселерометр). Placeholder до GPS (пиксельарт). Карта проезженных дорог (дедупликация 2м, вело/пешие). Импорт тайлов по регионам (SQLite, роутер LAN). - **BLE пульсометр** — подключение к FitPro браслетам и стандартным HR датчикам (0x180D). ЧСС, SpO2, давление в реальном времени при записи трека. - **Расчёт ккал** — физическая модель для велосипеда (мощность из gradient + Crr + CdA). MET-таблица для ходьбы/бега и тренировок (приседания 6.0, скакалка 12.3, растяжки 2.3, бассейн 8.0). Профили велосипедов. BMR по Mifflin-St Jeor с коэффициентом активности. - **Тренировки** — приседания (подходы x повторения), скакалка, растяжки, бассейн (дистанция). Автоматический расчёт ккал по MET и весу. - **Нутриенты** — 37 микронутриентов (витамины, минералы, жирные кислоты, женьшень, ресвератрол, CoQ10). Нормы РСП/АУП (РФ/ЕС/США). Фармакокинетика — запасы в организме по полураспаду. - **Трекинг жидкости** — water_pct в продуктах, прогресс-бар, настраиваемая норма. - **Графики** — скорость, высота, ЧСС тренировки с зумом и pan. Тренд веса. Донат макронутриентов. Баланс ккал (приход/расход). - **OTA обновления** — проверка BUILD_NUMBER на роутере (LAN) или VPS, скачивание через браузер. - **Ручные маршруты** — рисование трека на карте тапами, elevation из прошлых треков или open-meteo API. - **Экспорт/импорт** — свои продукты, рецепты и добавки одним файлом (JSON). - **Вес, сон, добавки** — логирование с историей. ## Стек - **Frontend**: чистый JavaScript, HTML, CSS. Без React/Vue/bundler. - **Backend**: Rust (Tauri 2) — SQLite, IPC, seed import, BLE (btleplug на десктопе). - **Android**: Kotlin — foreground GPS service, BLE HR service, WakeLock, SAF. - **Библиотеки**: Leaflet 1.9.4 (карты), leaflet-rotate (компас), Chart.js (графики), Hammer.js (жесты), JSZip. ## Сборка ```bash # Зависимости: Rust, Node.js, Android SDK + NDK ./build.sh -d android # debug APK ./build.sh android # release APK ./build.sh -i android -d # debug + установка на устройство ./build.sh -u android # release + upload на VPS (OTA) ./build.sh -d -i -u android # debug + install + upload ``` ## Структура Подробно: [PROJECT_MAP.md](PROJECT_MAP.md) ``` frontend/ js/main.js — UI, навигация, модалки, компас, ландшафт (~5500 строк) js/db.js — БД, миграции, CRUD (~1500) js/gps.js — GPS, физика ккал, BLE HR polling (~1200) js/bmr.js — BMR формула, РСП, полураспад нутриентов js/sync.js — синхронизация между устройствами (LAN) js/tilecache.js — оффлайн тайлы (IndexedDB) css/styles.css — стили, тёмная тема, ландшафтный режим img/gps-placeholder.png — пиксельарт заглушка до GPS data/products_seed.db — 13480 продуктов src-tauri/ src/lib.rs — Rust бэкенд, seed import src/ble.rs — BLE HR (btleplug десктоп, file IPC Android) gen/android/ — Kotlin: MainActivity, GpsRecorderService, BleHrService tools/ 5ka_scraper.user.js — Tampermonkey скрейпер 5ка magnit_scraper.user.js — Tampermonkey скрейпер Магнит ion_scraper.user.js — Tampermonkey скрейпер ИОН smart/ protocol.js — FitPro BLE протокол (reverse-engineered) hr-reader.js — Node.js прототип чтения ЧСС ``` ## Данные продуктов | Источник | Продуктов | Витамины/минералы | |----------|-----------|-------------------| | Магнит (SSR парсинг) | 8627 | нет | | 5ка (API скрейпер) | 3103 | нет | | ИОН (web.ion.ru) | 1078 | да | | KDV (SSR парсинг) | 672 | нет | | Обогащено из ИОН | 1398 | да (nutrients_guessed) |