Skip to content
c17 .ioJoin list

Stacks / Backend

Medium

Nominatim + GraphHopper / uMap

Maps you host. Nominatim is GPL-3.0 geocoding; GraphHopper is Apache-2.0 routing; uMap is AGPL-3.0 custom maps — Google Maps without the API meter.

The problem

Google Maps meters geocoding, routing, and embeds. You wanted OpenStreetMap data on hardware you run. Nominatim is GPL-3.0 search/geocoding (needs an OSM planet or extract — disk is the honest cost). GraphHopper is Apache-2.0 routing. uMap is AGPL-3.0 if the job is a custom map you embed. This is not Google Street View, traffic, or every Places review. Organic Maps / OsmAnd are clients, not this server stack.

Replaces

Google Maps

Replace Google Maps

Estimated SaaS saved

$1,200

per year, small team, before lock-in

Start on Railway

Nextcloud if this is files, not maps

Sponsor this stack Tip jar

Placeholder: this is a heavy box. Nominatim wants a large volume for an OSM extract; GraphHopper wants a graph build; uMap is the lighter custom-map app. A single Railway service is often the wrong size — a VPS with disk is the honest path. No one-click template in this repo yet — Start on Railway.

The stack

Cost table

You stop payingTypical / yearSelf-host instead
Google Maps Platform (small team)$1,200Nominatim and/or GraphHopper + OSM data

Agent setup prompt

Replace Google Maps APIs with Nominatim (geocode/search), GraphHopper (routing), and/or uMap (custom embed).

- Nominatim: import an extract, not a toy sqlite, if you actually query a region. GraphHopper: build the graph from OSM. uMap if the job is a map you draw.
- Disk and RAM are the cost. Do not claim Street View, live traffic, or Places. Write AGENT_PROMPT.md.

Also as markdown: /stacks/osm-maps.md

FAQ

Do I need all three?
No. Nominatim for search. GraphHopper for directions. uMap for a custom map on a site. Start with the slice you pay Google for.
Will this fit on Railway?
uMap might. Nominatim usually wants a large volume and a long import. Treat a VPS as the default.