- README: add GPX upload feature to fiche list and intro section - CLAUDE.md: clarify ADR convention (per-work-item vs global) - ET-005: add YAML frontmatter to business request - PH-7: document F-07/F-08 done, F-10 pending in phase BRD - docs/architecture: add client modules table (app.js, units.js, gpx.js)
94 lines
4.5 KiB
Markdown
94 lines
4.5 KiB
Markdown
# 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)
|
||
|