Usage Guide

How to consume pilgrimage data in your application.

Via jsDelivr CDN

Pin to a major version for stability. Files are cached globally.

https://cdn.jsdelivr.net/gh/walktalkmeditate/open-pilgrimages@v1/index.json
https://cdn.jsdelivr.net/gh/walktalkmeditate/open-pilgrimages@v1/routes/camino-frances/route.geojson
https://cdn.jsdelivr.net/gh/walktalkmeditate/open-pilgrimages@v1/routes/camino-frances/stages.json
https://cdn.jsdelivr.net/gh/walktalkmeditate/open-pilgrimages@v1/routes/camino-frances/metadata.json
https://cdn.jsdelivr.net/gh/walktalkmeditate/open-pilgrimages@v1/routes/camino-frances/waypoints.geojson

JavaScript / TypeScript

const BASE = 'https://cdn.jsdelivr.net/gh/walktalkmeditate/open-pilgrimages@v1';

// Discover available routes
const index = await fetch(`${BASE}/index.json`).then(r => r.json());

// Load route geometry for Mapbox GL JS, Leaflet, etc.
const route = await fetch(`${BASE}/routes/camino-frances/route.geojson`).then(r => r.json());
map.addSource('camino', { type: 'geojson', data: route });

// Load stage data
const stages = await fetch(`${BASE}/routes/camino-frances/stages.json`).then(r => r.json());
for (const stage of stages.stages) {
  console.log(`Stage ${stage.index}: ${stage.name.en} — ${stage.distanceKm} km`);
}

Swift (iOS)

import MapKit

let base = "https://cdn.jsdelivr.net/gh/walktalkmeditate/open-pilgrimages@v1"
let url = URL(string: "\(base)/routes/camino-frances/route.geojson")!
let (data, _) = try await URLSession.shared.data(from: url)

// Decode as standard GeoJSON
let features = try MKGeoJSONDecoder().decode(data)

// Or decode with custom types
let route = try JSONDecoder().decode(GeoJSONFeatureCollection.self, from: data)

Python

import json
import urllib.request

BASE = "https://cdn.jsdelivr.net/gh/walktalkmeditate/open-pilgrimages@v1"

# Load stages
url = f"{BASE}/routes/camino-frances/stages.json"
stages = json.loads(urllib.request.urlopen(url).read())

for stage in stages["stages"]:
    name = stage["name"]["en"]
    km = stage["distanceKm"]
    interior = stage.get("interior", {}).get("theme", {}).get("en", "—")
    print(f"  Stage {stage['index']:2d}: {name:45s} {km:5.1f} km  [{interior}]")

Attribution

When using this data, include:

Contains information from Open Pilgrimages
(https://github.com/walktalkmeditate/open-pilgrimages),
made available under the ODbL.

Route data © OpenStreetMap contributors.
https://www.openstreetmap.org/copyright

Contributing

See the contributing guide for how to add routes, fix data, and contribute interior journey content.