Offline-capable geomap, meant for storing location bookmarks
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

61 1 0

Clone this repository

https://tangled.org/bpev.me/maps https://tangled.org/did:plc:cyokxsil6nwosdaiwmqvlp3s/maps
git@knot.bpev.me:bpev.me/maps git@knot.bpev.me:did:plc:cyokxsil6nwosdaiwmqvlp3s/maps

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

MapsApp

MapsApp is an offline-capable geomap, meant for storing location bookmarks.

It is a PWA built on MapLibre GL and PMTiles, and serves as a proof-of-concept for the data flow behind something like Organic Maps. A world basemap is fetched on first load, users can download regional tiles on demand with additional detail, and everything renders offline after that. Bookmarks, collections, and search history are stored locally.

Screenshot

Screenshot

Technologies#

App

  • maplibre-gl — vector tile rendering engine
  • pmtiles — single-file tile archive format; enables serving maps from static files with no tile server
  • pmtiles-offline — utility for serving pmtiles from local data
  • nominatim - api for geocoding
  • civility — PWA build system, service worker framework, router, and state management
  • lit — reactive web components for route views
  • deno — runtime and toolchain

Tile creation — see data/README.md for the full pipeline.

Development#

Running the app requires Deno and Civility:

curl -fsSL https://deno.land/install.sh | sh
deno install -gA jsr:@civility/cli --name civ

Before running the app, you need tiles, built via the CLI:

deno task data list
# First, download or extract osm files to /data/osm
deno task data download:osm europe/spain
deno task data extract europe/spain --from planet

# Then build pmtiles
deno task data build europe/spain

The you can then serve or build the app with Civility CLI:

civ start # Start a server with hot reload
civ build # Builds static files to serve from /www

Lint and type-check:

deno task test