A small Python static-site generator for scenic road-trip planning. It turns a structured data/trip.yaml itinerary into a shareable dashboard with daily pages, maps, Google Maps links, GPX files, and a KML export.
The included sample data is an Alpine sports-car itinerary using public area anchors instead of exact private accommodation names or addresses.
uv sync
uv run route-dashboard validate
uv run route-dashboard build
uv run route-dashboard serveThe generated site is written to dist/. The site uses Leaflet and OpenStreetMap tiles. Route geometry comes from cached OpenRouteService GeoJSON when present, and otherwise falls back to straight waypoint lines plus the YAML distance/time estimates.
For routed road geometry, create a local .env file:
OPENROUTESERVICE_API_KEY="your-key-here"Then run:
uv run route-dashboard fetch-routes
uv run route-dashboard buildfetch-routes caches route geometry under .cache/ors/. The .env file and route cache are ignored by git.
Start with data/trip.yaml. Keep private hotel names, exact home addresses, booking references, and contact details out of that file if you intend to publish the repo or dashboard.
For a practical walkthrough, see docs/ADDING_YOUR_OWN_TRIP.md.
This repo includes wrangler.jsonc and a GitHub Actions workflow for deploying the generated dist/ site to Cloudflare Workers Static Assets.
For setup steps, required Cloudflare secrets, and manual deploy commands, see docs/CLOUDFLARE_DEPLOYMENT.md.
uv run ruff check .
uv run ruff format --check .
uv run mypy
uv run coverage run -m unittest discover -s tests
uv run coverage reportCoverage is enforced at 80% via pyproject.toml.