🗺️ Explore GuideAlong tours on an interactive map.
A simple web app that displays GuideAlong tours on an interactive map — completely free, with no API keys required.
- 🗺️ Every tour, one map — the complete GuideAlong catalog plotted on an interactive map
- 📍 Info-rich popups — titles, descriptions, duration, audio points, and direct links right on the marker
- 🔍 Instant search — filter by name, country, state, tour type, or status; jump to any tour with
⌘K/Ctrl+K - 🗂️ View it your way — group tours by Status or Category (Driving, Walking, National Park, Bundle)
- 🔃 Sort on the fly — by title, completion date, or distance from your location
- 📡 Locate-me — one tap finds the tours nearest you, with live distances
- ✅ Progress tracking — completed trips get a green GuideAlong pin and their completion date
- 📱 Mobile friendly — collapsible panels and a peek-and-expand bottom sheet for on-the-go exploring
- 🗺️ MapLibre GL JS — interactive vector maps
- 🌍 OpenFreeMap — free, no-API-key vector tiles
- ⚡ Vite — dev server and static file serving
- 📦 pnpm — fast, disk-efficient package manager
- 🧹 Biome — linting and formatting
- ☁️ Netlify — hosting and preview deploys
- 📍 Google Maps Geocoding SDK — optional server-side geocoding
- 📦 Node.js and pnpm
Install dependencies and start the Vite dev server:
pnpm install
pnpm startThe UI runs entirely in the browser — with no API keys required. See Scripts for the full command reference.
- 🔍 Search: press
Cmd+K/Ctrl+K(or the search button) for a keyboard-driven tour search palette, or use the inline search field. - 🎛️ Filters: Country, State, Tour type (by category), Tour status, and Search (title/description).
- 🗂️ Group & Sort: group the list by Status or Category, and sort by Title, Completed date, or Distance.
- 📡 Locate-me: use the map's locate control to capture your position, then sort by Distance to see tours nearest you (with computed distances shown).
- 📑 Sections (Filters, Group & Sort, Tours) are collapsible and start collapsed on load; the Tours header shows the count and completed tally.
- 🖱️ Clicking a tour in the list pans/zooms the map and opens its info window.
| Command | Description |
|---|---|
pnpm start |
Serve the UI from ./src on port 3000 |
pnpm fetch:tours |
Scrape and update src/data/tours.json (and geocode when an API key is set) |
pnpm test |
Run the Node test suite |
pnpm lint |
Apply lint fixes via Biome |
pnpm lint:check |
Check lint without writing changes |
pnpm lint:ci |
Combined CI gate with GitHub annotations |
pnpm format |
Format files via Biome |
pnpm format:check |
Check formatting without writing changes |
pnpm check |
Check lint, formatting, and import order |
pnpm check:fix |
Apply all Biome fixes |
pnpm links:check |
Check internal links with lychee |
pnpm links:check:external |
Also check external URLs |
pnpm links:check uses lychee (brew install lychee);
settings live in lychee.toml.
Contributions are welcome! 🎉
- Open an issue for bugs or feature requests.
- See CONTRIBUTING.md for development details — data files, refreshing tour data, deploying to Netlify, and troubleshooting.
⚖️ Licensed under the ISC License.
🚗 Tour content is sourced from GuideAlong and remains their property.
ℹ️ This project is for demonstration purposes and is not affiliated with GuideAlong.

