# PROJECT MAP — BalDav Трекер здоровья и активности. Pure JS + Tauri 2 + SQLite. Без фреймворков и бандлеров. ## Статистика | Метрика | Значение | |---------|----------| | Строк кода | ~22000 | | Файлов исходников | 50+ | | Язык | JS 70%, Rust 6%, Kotlin 12%, CSS 12% | | Таблиц в БД | 21 | | Экранов | 7 основных + 15 модалок | | IPC команд (Tauri) | 14 | | Библиотеки | Leaflet, Chart.js, Hammer.js, JSZip | | Платформы | Android (Kotlin), Desktop (Tauri) | ## Структура файлов ### Frontend (`frontend/`) | Файл | Строк | Назначение | |------|-------|------------| | `js/main.js` | ~5900 | Экраны, навигация, модалки, графики, нутриенты, HR UI, компас (EMA + gimbal lock), ландшафт (3 режима), дороги. `appConfirm`/`appPrompt` (in-app диалоги вместо нативных, в стеке окон). Страница «Сохранённые маршруты», оверлей маршрута на записи и просмотре (`whenMapReady` — await готовности карты, не таймаут). Панель де-джиттера на детали трека (ползунки окно/итерации, живое превью, сохранить/откат, `reopenDetail` — переоткрытие детали без наложения оверлеев). `showRouteDetail` — предпросмотр маршрута (карта+профиль высоты+тап-высоты+фуллскрин), `showRouteEditor` — создание/правка маршрута (тап карты=точка в конец, тап линии=вставка в сегмент, тащить=двигать, тап точки=удалить; `makeMarker` возвращает маркер для push/splice). `appConfirm`/`appPrompt`/`appAlert` — in-app диалоги (нативных `alert/prompt/confirm` не осталось; `