This repository contains the source code and configuration files for a geospatial application that serves vector tiles from PMTiles archives. The application uses FastAPI for the backend, Vue.js for the frontend, and MinIO as an object storage service. It does data processing to generate PMTiles with DuckDB and Tippecanoe.
- Downloads PMTiles files from S3 if they don't exist locally.
- Serves TileJSON metadata for the PMTiles archive.
- Provides vector tiles from the PMTiles archive.
- Uses MinIO as an object storage service.
- Frontend built with Vue.js and MapLibre GL.
- Python 3.13 or higher
- Node.js and npm
- Docker and Docker Compose
Make sure you have UV installed on your system. https://docs.astral.sh/uv/getting-started/installation/
- Clone the repository:
git clone git@github.com:jtbaker/open-maps.git
cd open-maps
uv sync
# activate the virtual environment
source ./.venv/bin/activate
export PYTHONPATH=./app
uvicorn main:app --reload- Navigate to the frontend directory:
cd open-maps-frontend - Install dependencies:
npm ci
npm run dev- Run the following command to build PMTiles:
. ./scripts/build-pmtiles.sh- Create a new MinIO instance by running this from the root:
docker compose upNow you should be good to take a look at your application! Open your browser and go to http://localhost:5173. You should see the map displayed. Enjoy exploring!