Orbit is a free, open-source web app for comparing walking, driving, and cycling times from one location to multiple destinations. It uses OpenStreetMap data and public routing APIs — no API keys or credit cards required.
- Multi-mode routing — walking, driving, and cycling times side by side
- 20+ POI categories — schools, shops, restaurants, banks, and more
- Interactive map — click to pin places, explore POIs, view route lines
- Dark mode — system preference detection with manual toggle
- Locally persisted state — your places persist in localStorage
- Privacy-focused — no tracking; geocoding and routing go through your own server-side proxies
Prerequisite: Node.js 20.9 or later.
git clone https://github.com/GevaOr/orbit.git
cd orbit
npm install
npm run devOpen http://localhost:3000.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Maps | MapLibre GL + OpenFreeMap tiles |
| State | Zustand |
| Routing | OSRM (FOSSGIS) |
| Geocoding | Nominatim |
| POIs | Overpass API |
| Styling | Tailwind CSS |
| Tests | Vitest |
- Set a source — search in the sidebar or click the map and choose "Set as source"
- Add destinations — search, pick POIs from category chips, or click the map
- Compare modes — toggle walk / car / bike in the header; left-click selects, right-click disables
- Explore — click destination cards to focus routes; use the eye icon to hide pins
Orbit uses Next.js API routes as secure proxies to external OSM services, so it needs a Node.js host (static export alone is not enough).
Recommended: Vercel — import the GitHub repo and deploy with zero config.
npm run build
npm start # self-hosted production serverNo configuration is required for the defaults. To configure an optional deployment setting, copy the example file:
cp .env.example .env.localNEXT_PUBLIC_BASE_PATH— URL subpath for a deployment such ashttps://example.com/orbit. Set it beforenpm run build; values prefixedNEXT_PUBLIC_are embedded in the browser bundle.DISABLE_RATE_LIMITING— disables the in-memory API rate limiter. Use it only for local development or tests; never set it in production.
npm install
npm run dev # dev server
npm test # run tests
npm run test:watch # watch mode
npm run lint # ESLint
npm run build # production buildgraph TD
UI[React UI] --> Store[Zustand Store]
Store --> Map[MapLibre GL]
Store --> API[Next.js API Routes]
API --> OSRM[OSRM Routing]
API --> Nominatim[Geocoding]
API --> Overpass[POI Queries]
Map --> Tiles[OpenFreeMap / OSM Tiles]
See CONTRIBUTING.md. Bug reports and pull requests are welcome.
MIT — see LICENSE.
Built with open maps and free software.