All apps

Walking directions that trade a minute for a nicer walk with unmap

How the unmap Alive Maps app is put together: the fastest walk and livelier detours past parks, water, streets away from traffic, cafés and public art, ranked by five dials you can move.

Alive Maps gives walking directions that trade a minute for a nicer walk. Pick a start and a destination, or one of three Calgary samples, and press Get directions: the app finds the fastest walk, then livelier detours past parks, the river, streets away from traffic, cafés and public art, and scores them all. Five dials say what makes a walk alive to you and how many extra minutes you will take, and moving them changes the pick at once. It runs at apps.unmap.dev/alive-maps, and its source is a standalone Next.js project you can clone and run with your own key.

The walks, parks, water, streets and places are live Unmap responses built from OpenStreetMap. Two things on screen are not, and both are labelled where they are seen: the three sample walks, and the highlight pictures, which are AI-generated illustrations of a kind of place, never photos of the place named.

What it does

  • Fastest walk and livelier detours: the fastest walk first, then detours past parks, water, streets away from traffic and places, all scored.
  • Five dials: what counts as alive to you, and how many extra minutes you will take. The pick is re-ranked as you move them.
  • The pick: drawn in the theme's primary colour with a time bubble, up to three cards for what it passes, and a "Why this route" card with the five scores.
  • Share: the link follows the walk on screen, such as ?from=-114.087,51.0525&to=-114.0614,51.0478, so copying it shares the walk you picked; ?lang=fr opens it in French.
  • Honest gaps: when places or the scoring tiles cannot be read, the signals they feed leave the ranking, their dials turn off, the "Why this route" card says "Unavailable", and the panel says why.

What it costs in API calls

Get directions spends at most 40 calls: one /route for the fastest walk, up to 24 basemap tiles read for scoring the parks, water and streets (these are not the map's own display tiles, which are separate), two POST /places/along for the cafés, shops and landmarks, then /route pairs for the detours and /match for walks found on the walking graph, all within that budget, tile fetches included. The answer is kept per start and destination, so asking again costs nothing, unless a source was unavailable, when asking again tries it again. The dials cost nothing: moving them re-ranks the walks in your browser and calls nothing. The search boxes call /geocode/autocomplete as you type, and the map makes its own style and tile requests.

The key it needs

Any browser key. The shared apps key works, and no add-on is needed.

Built from the registry, unmodified

The whole page is the alive-route-explorer block, with the geocoder and the map items under it, copied in unmodified; the app adds the title, the walk from the link and the info button. Installing the same block into your project is one command:

npx @unmap/cli add alive-route-explorer

What it does not do

  • Photos: the highlight pictures are AI-generated illustrations, not photos of the places.
  • Live conditions: closures, construction, weather and opening hours are not considered.
  • Other modes: walking only, with no cycling, driving or transit.
  • Accessibility routing: the walks do not avoid stairs or steep grades.

Run it yourself

You need Git, Node.js 24, pnpm and a browser key from the dashboard that allows http://localhost:3210.

git clone --depth 1 https://github.com/unmap-dev/alive-maps.git
cd alive-maps
pnpm install --frozen-lockfile
cp .env.example .env.local

Set NEXT_PUBLIC_UNMAP_KEY in .env.local to your key, run pnpm dev, and open localhost:3210. The Routing reference covers the walking routes, the Places reference covers the places along a route, and the Maps API reference covers the basemaps.