A fitness balance app with calories calculator (consumed+burnt), extensive mapping/routing capabilities route for your walks and bike rides
tauri-plugin-sql execute() returns { lastInsertId } but it's unreliable
(returns 0 or undefined for INSERT). New recipe got rid=undefined,
then addRecipeIngredient failed with NOT NULL constraint on recipe_id.
Fix: query actual id after insert with SELECT id ORDER BY id DESC LIMIT 1.
Edit worked because rid came from the existing recipeId parameter.
|
||
|---|---|---|
| frontend | ||
| src | ||
| src-tauri | ||
| .gitignore | ||
| data.js | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| PROJECT_MAP.md | ||
| README.md | ||
BalDav
Персональный трекер здоровья и физической активности.
Возможности
- Дневник питания — 13480 продуктов из магазинов (Магнит, 5ка, KDV) + база ИОН с микронутриентами. Рецепты с учётом термообработки (потери витаминов при варке/жарке). Единицы измерения (штуки, ложки, стаканы).
- GPS трекинг — запись маршрутов на велосипеде/пешком в фоне. Оффлайн карты (Leaflet + IndexedDB кэш). Импорт GPX/FTB (FitoTrack). Экспорт GPX.
- Расчёт ккал — физическая модель для велосипеда (мощность из gradient + Crr + CdA). MET-таблица для ходьбы/бега. Профили велосипедов (вес, звёзды, покрытие).
- Графики — скорость и высота тренировки с зумом. Тренд веса. Донат макронутриентов. Баланс ккал (приход/расход).
- Вес, сон, добавки — логирование с историей.
Стек
- Frontend: чистый JavaScript, HTML, CSS. Без React/Vue/bundler.
- Backend: Rust (Tauri 2) — SQLite, IPC, seed import.
- Android: Kotlin — foreground GPS service, WakeLock, SAF.
- Библиотеки: Leaflet (карты), 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 + установка на устройство
Структура
Подробно: PROJECT_MAP.md
frontend/
js/main.js — UI, навигация, модалки (3264 строк)
js/db.js — БД, миграции, CRUD (972)
js/gps.js — GPS, физика ккал (947)
js/tilecache.js — оффлайн тайлы (178)
css/styles.css — стили (1599)
data/products_seed.db — 13480 продуктов
src-tauri/
src/lib.rs — Rust бэкенд (512)
gen/android/ — Kotlin: MainActivity, GpsRecorderService
tools/
*_scraper.user.js — скрейперы магазинов (Tampermonkey)
import_*.js — импорт в seed DB
enrich_nutrients.js — обогащение микронутриентами
Данные продуктов
| Источник | Продуктов | Витамины/минералы |
|---|---|---|
| Магнит (SSR парсинг) | 8627 | нет |
| 5ка (API скрейпер) | 3103 | нет |
| ИОН (web.ion.ru) | 1078 | да |
| KDV (SSR парсинг) | 672 | нет |
| Обогащено из ИОН | 1398 | да (nutrients_guessed) |