WallpaperMachine
The wallpapers you love. A new home on your Mac.
Découvrez des itinéraires de randonnée sur les sentiers GR et PR, accessibles en train. TrainRando est un projet open-source qui répertorie des randonnées entre gares en France.
Translation pending
LifestylePython · AstroGitHub @BlightwidowOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Train station-to-station hiking on French GR paths -- car-free hiking made easy.
A Python pipeline fetches hiking routes, train stations, bus stops, and elevation data from open sources, then exports a catalog. An Astro static website displays routes on a map with filters, elevation profiles, section selection, and GPX download.
BUILD TIME RUNTIME (static files)
+-----------------------------------------+ +----------------------------+
| Python Pipeline | | Astro Static Site |
| | | |
| Overpass API --+ | | Leaflet Map + List/Filter |
| SNCF stations -+-> fetch -> match -> | | Elevation chart |
| GTFS bus data --+ geography -> | | Section selector + QR |
| SRTM tiles ----+ elevation -> | | | |
| export | | catalog.json |
| data/catalog.json | | /gpx/{id}.gpx |
| data/gpx/*.gpx | | /geojson/{id}.json |
| data/geojson/*.json | | /elevation/{id}.json |
| data/elevation/*.json | +----------------------------+
+-----------------------------------------+
The pipeline:
routes.yaml (176 trails with OSM relation IDs)catalog.json consumed by the websiteOn macOS, brew bundle at the repo root installs every native tool (uv, osmium-tool, gdal, tippecanoe, rclone, bun). Otherwise:
pois stage; tracks fall back to the Overpass API)cd pipeline
uv sync --all-extras
uv run python -m open_rando pipeline
pipeline chains five stages: tracks, gtfs, pois, link, catalog. The POI stage reads the local OSM extract index, so build it first (make -f Makefile.osm). Each stage also runs alone, see docs/SPLIT_PIPELINE.md.
Options:
uv run python -m open_rando pipeline --route "GR 13" # single route
uv run python -m open_rando pipeline --dry-run # list routes without processing
uv run python -m open_rando pipeline --retry-failed # only routes that failed before
uv run python -m open_rando pipeline --skip-gtfs # reuse the GTFS stop index
Pipeline output goes to ~/.local/share/open-rando/data/, cache to ~/.cache/open-rando/.
cd website
bun install
bun run dev
The dev server copies pipeline data into public/data/ automatically.
To build for production:
bun run build
Static output goes to website/dist/.
open-rando/
pipeline/ Python data pipeline
src/open_rando/
cli.py Entry point
config.py Constants (API config, search radius)
fetchers/ Overpass, SNCF, GTFS, SRTM, POI fetchers
processors/ Station matching, elevation, geography, slicing
exporters/ GPX, GeoJSON, elevation, catalog writers
routes.yaml Curated GR route catalog (176 trails)
website/ Astro static site
src/
pages/ Landing, app (list + map), route detail (FR + EN)
components/ ElevationChart, RouteCard, RouteFilters, RouteList, SearchableSelect
lib/ catalog.ts, i18n.ts, elevation.ts, route-filters.ts
docs/ Architecture, data sources, deployment
| Layer | Tech |
|---|---|
| Pipeline | Python 3.13+, Shapely, requests, gpxpy, pyyaml |
| Website | Astro, Leaflet, Tailwind CSS, qrcode-generator |
| Data sources | OpenStreetMap Overpass API, SNCF open data, transport.data.gouv.fr GTFS, OSRM, SRTM elevation tiles |
All data comes from open sources under the ODbL license.
route=hiking, ref~"^GR")railway=station / railway=halt), filtered for active service via SNCF datatourism=hotel|guest_house|hostel|camp_site) near the trail.hgt tiles, sampled every 50m along the trail# Lint and format (Python)
cd pipeline
uv run ruff check src/
uv run ruff format src/
# Type check
uv run mypy src/
Code and website: GPLv3
Data: ODbL (OpenStreetMap)