All projects
Fullstack· 2025

Self-hosted vector map stack

Replaced paid map APIs with a self-hosted tile server, cutting map costs to zero.

  • Docker
  • Nginx
  • Planetiler
  • TileServer GL
  • MapLibre

The problem

Commercial map APIs charge per map load; for a taxi app where the map is always open, that doesn't scale.

What I built

OpenStreetMap data processed with Planetiler into vector tiles, served by TileServer GL behind an Nginx reverse proxy, containerised with Docker; MapLibre on the client.

Technical challenges

  • Tile generation and storage sizing.
  • HTTPS and cleartext-traffic configuration for Android and iOS ATS.
  • Cache strategy to keep maps fast on slow mobile connections.