Skip to content

Repository files navigation

Orbit — Multi-Destination Travel Times

CI License: MIT

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.

Features

  • 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

Quick Start

Prerequisite: Node.js 20.9 or later.

git clone https://github.com/GevaOr/orbit.git
cd orbit
npm install
npm run dev

Open http://localhost:3000.

Tech Stack

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

Usage

  1. Set a source — search in the sidebar or click the map and choose "Set as source"
  2. Add destinations — search, pick POIs from category chips, or click the map
  3. Compare modes — toggle walk / car / bike in the header; left-click selects, right-click disables
  4. Explore — click destination cards to focus routes; use the eye icon to hide pins

Deployment

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 server

Configuration

No configuration is required for the defaults. To configure an optional deployment setting, copy the example file:

cp .env.example .env.local
  • NEXT_PUBLIC_BASE_PATH — URL subpath for a deployment such as https://example.com/orbit. Set it before npm run build; values prefixed NEXT_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.

Development

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 build

Architecture

graph 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]
Loading

Contributing

See CONTRIBUTING.md. Bug reports and pull requests are welcome.

License

MIT — see LICENSE.


Built with open maps and free software.

About

Compare walking, driving, and cycling travel times from one location to multiple destinations. A privacy-focused, open-source map app powered by OpenStreetMap, MapLibre, OSRM, Nominatim, and Overpass. No API keys required.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages