# Архитектура Enduro Trails ## Обзор Веб-приложение для планирования эндуро-маршрутов с визуализацией рельефа. ## Компоненты - **Frontend** — MapLibre GL JS, vanilla JS (ES modules) - **Backend API** — FastAPI (Python 3.12), uvicorn - **Tile Server** — статические raster tiles (PNG), раздаются через FastAPI/nginx - **Routing Engine** — OSRM с кастомным эндуро-профилем - **Database** — SQLite + Spatialite (точки интереса, маршруты) ## Слои карты - Base map (OpenStreetMap) - Hillshade (рельеф с тенями) - TRI (Terrain Ruggedness Index — сложность рельефа) - Hypsometric (высотная раскраска) - Trails (маршруты из OSM) ## Деплой Один Docker Compose на mva154. Nginx проксирует /enduro/ на контейнер. ## Клиентские модули (src/web/) | Модуль | Описание | Work Item | |--------|----------|-----------| | `app.js` | Главный модуль: MapLibre, роутинг, UI, тёмная тема | PH-1..PH-6 | | `units.js` | Централизованный форматтер расстояний (км/мили), localStorage, событие `unitchange` | ET-005 | | `gpx.js` | GPX 1.1 парсер (DOMParser), рендеринг треков/waypoints, canvas-профиль высот, `rebuildMapOverlays()` | ET-006 | | `style.json` | MapLibre стиль (светлая тема) | PH-1/PH-5 | | `style-dark.json` | MapLibre стиль (тёмная тема) | PH-5 |