A fitness balance app with calories calculator (consumed+burnt), extensive mapping/routing capabilities route for your walks and bike rides
Find a file
4aiman 50ec5c21f8 Health-diet.ru products (24K), GPS session safety, build.sh upload fix
Products:
- health-diet.ru scraper (Tampermonkey) + import script
- 11469 products with 37 nutrients, Dodo 258, McDonalds 619, KFC 361, Ashan 2000
- Rust import_seed_products: dynamic column list, auto-create missing columns
- Seed version bumped to 10

GPS session safety:
- Separate gps_points_{ts}.jsonl per session, deleted only after DB save
- Toast on DB errors, NaN guard in finishGpsSession

Other:
- build.sh: router/VPS upload only with -u flag
- Orientation buttons bottom-right, weather via Yandex Pogoda
2026-06-28 23:17:51 +03:00
frontend Health-diet.ru products (24K), GPS session safety, build.sh upload fix 2026-06-28 23:17:51 +03:00
src GPS point ordering + GPX export + chart zoom fixes 2026-05-16 21:21:13 +03:00
src-tauri Health-diet.ru products (24K), GPS session safety, build.sh upload fix 2026-06-28 23:17:51 +03:00
.gitignore Initial commit: BalDav health tracker 2026-05-13 10:21:24 +03:00
data.js GPS point ordering + GPX export + chart zoom fixes 2026-05-16 21:21:13 +03:00
index.html GPS point ordering + GPX export + chart zoom fixes 2026-05-16 21:21:13 +03:00
package-lock.json GPS point ordering + GPX export + chart zoom fixes 2026-05-16 21:21:13 +03:00
package.json Initial commit: BalDav health tracker 2026-05-13 10:21:24 +03:00
PROJECT_MAP.md Health-diet.ru products (24K), GPS session safety, build.sh upload fix 2026-06-28 23:17:51 +03:00
README.md Health-diet.ru products (24K), GPS session safety, build.sh upload fix 2026-06-28 23:17:51 +03:00

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.

Сборка

# Зависимости: 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

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 прототип чтения ЧСС

Данные продуктов

Источник Продуктов Витамины/минералы
Health-Diet.ru 8090 да (37 нутриентов, omega-3/6, вода)
Магнит (SSR парсинг) 7690 нет
5ка (API скрейпер) 3354 нет
Ашан (HD) 2000 да
ИОН (web.ion.ru) 1079 да
KDV (SSR парсинг) 667 нет
Макдоналдс (HD) 619 да
KFC (HD) 361 да
Додо Пицца 258 КБЖУ
Гриднев (PDF) 217 да
Всего ~24400