A local-first web map for visualizing MeshCore node coverage using OpenStreetMap data and Leaflet.
The map supports:
- true-radius coverage circles (meters)
- overlapping node ranges
- address search (via OpenStreetMap Nominatim)
- optional edit mode
- GeoJSON import/export
Designed for city-scale MeshCore planning (e.g. Lower Mainland / Seattle).
- Leaflet (map rendering)
- OpenStreetMap tiles
- Nominatim (address geocoding)
- Node.js + Express (API)
- Nginx (static hosting + reverse proxy)
- Docker / Docker Compose
- Docker Desktop (or Docker Engine + Compose)
git clone https://github.com/bitbangr/meshcore-map.git
cd meshcore-map
cp api/data/nodes.example.json api/data/nodes.json
cp api/data/geocode-cache.example.json api/data/geocode-cache.json
docker compose up --buildThe map is view-only by default. To enable editing, append the edit key to the URL: http://localhost:8081/?edit=YOUR_EDIT_KEY
The edit key is configured in docker-compose.yml.
Nodes are stored internally as points with metadata:
- latitude / longitude
- radius (meters)
- category (e.g. fixed, portable, repeater)
GeoJSON export uses Point features with radius_m in properties.
Runtime data in api/data/ is intentionally not committed. Public OpenStreetMap tile and geocoding services have usage limits. This setup is intended for light to moderate use.