# Enduro Trails 🏍️

OSM-карта с фокусом на грунтовые дороги для построения эндуро-маршрутов.

## Что это

Обычные карты оптимизированы под автомобили — асфальт яркий, грунтовки не видны. Enduro Trails переворачивает логику: **грунтовки и тропы — главный слой**, асфальт — тусклый фон.

Приложение помогает:
- Найти грунтовые дороги в любом районе
- Построить маршрут с максимумом грунта и минимумом асфальта
- Оценить сложность (grade 1-5, покрытие, уклон)
- Найти живописные места (озёра, виды, руины, броды)
- Загрузить свой GPX-трек и просмотреть его с профилем высот и статистикой
- Экспортировать маршрут в GPX для навигатора

## Демо

https://openclaw.mva154.duckdns.org/enduro/

## Фичи

- 🗺️ **Карта грунтовок** — MapLibre GL JS, кастомный стиль, тёмная/светлая тема
- 🛤️ **Маршрут** — до 5 альтернатив с разным балансом грунт/асфальт, промежуточные точки
- ✨ **Красивый маршрут** — замкнутый круг через живописные POI
- 🔗 **Связка** — соединить два трека грунтовками
- 🔍 **Разведка** — статистика грунтовок в радиусе 20/50/100 км
- 📏 **Линейка** — измерение расстояний на карте
- 📍 **Метки** — сохранение точек интереса
- 🏔️ **Рельеф** — гипсометрия + hillshade (SRTM 30м)
- 📊 **Статистика** — % грунта/асфальта, время, дистанция
- 📂 **GPX загрузка** — импорт треков с профилем высот, статистикой и сохранением при смене стиля карты
- 📥 **GPX экспорт** — трек + waypoints для навигатора
- 🌙 **Тёмная тема** — авто (по закату), ручная, синхронизация карты и UI

## Стек

| Компонент | Технология |
|-----------|-----------|
| Frontend | MapLibre GL JS + vanilla JS |
| Backend | Python 3.12 + FastAPI + uvicorn |
| БД | SQLite + Spatialite (1.1M треков, 14K POI) |
| Роутинг | OSRM с кастомным эндуро-профилем |
| Тайлы | Self-hosted raster (terrain, hillshade, TRI) |
| Контейнеризация | Docker + Compose |
| CI | Gitea Actions |

## Регион

ЦФО + Чувашия (расширение по запросу)

## Быстрый старт

```bash
make dev        # поднять локально (Docker Compose)
make test       # запустить тесты
make lint       # линтеры
make build      # собрать Docker-образ
```

## Структура

```
src/api/        — FastAPI backend (маршруты, тайлы, поиск)
src/web/        — фронтенд (MapLibre, UI)
tests/          — тесты (unit, integration, e2e)
docs/           — документация, ADR, work-items
scripts/        — утилиты
migrations/     — миграции БД
.openclaw/      — system prompts агентов
```

## Фазы

| # | Название | Описание |
|---|----------|----------|
| PH-1 | MVP | Карта грунтовок + MVT тайлы |
| PH-2 | Routing | OSRM роутинг + базовый UI |
| PH-3 | Smart Route | Альтернативы, статистика, GPX |
| PH-4 | Advanced Routing | Красивый маршрут, связка, разведка |
| PH-5 | Redesign | Тёмная тема, mobile UI, UX |
| PH-6 | Terrain | Hillshade + гипсометрия + TRI |
| PH-7 | Barriers | Шлагбаумы, тротуары, слой препятствий |
| PH-8 | Elevation Profile | Профиль высот, режим «Горка» |
| PH-9 | PWA | Офлайн режим |

Детали каждой фазы: [docs/phases/](docs/phases/)

## Лицензия

Данные: © OpenStreetMap contributors (ODbL)
Рельеф: NASA SRTM (Public Domain)

