c6b8826a66b0f4808a3f99bb7d2c5851c8996694
Remove dangerous git checkout $LAST_TAG from deployer prompt: it left the shared working copy in detached HEAD (breaking the next git pull) and did not roll back prod at all. Rollback now goes through the deploy hook (ssh ... bash ${HOOK} --rollback), which restores the app container to the previously running image. Narrow tools to Bash (git, curl) since the deployer no longer invokes docker directly.
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 |
Регион
ЦФО + Чувашия (расширение по запросу)
Быстрый старт
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/
Лицензия
Данные: © OpenStreetMap contributors (ODbL) Рельеф: NASA SRTM (Public Domain)
Description
Languages
Python
49.1%
JavaScript
39.7%
CSS
5.6%
HTML
4.3%
Lua
0.7%
Other
0.5%