Martin is a high-performance tile server serving vector/raster tiles from PostGIS, PMTiles, and MBTiles.
Also serves fonts, sprites, and styles.
Includes martin cp (bulk tile copier subcommand) and the mbtiles (MBTiles CLI) binary.
Uses just as command runner. just --list for all targets
# build
just check
# run server on :3000
just run
# start test DB (docker)
just start
# all tests
just test
# all unit tests
cargo nextest run --workspace
# PG tests (needs `just start`)
just test-pg
# end-to-end tests driving the built binaries
just test-e2e
# end-to-end tests that need the PostgreSQL database (needs docker, needs `just start`)
just test-e2e-pg
# lint the PR (run before committing)
just lint
# update all snapshot/expected output
just bless4-crate workspace:
martin- HTTP server, CLI (includingmartin cp), configuration, routing. Binary:martinmartin-ui/- React frontend, embedded at build time
martin-core- Core source logicsrc/tiles/{postgres,mbtiles,pmtiles,cog}/andsrc/resources/{fonts,sprites,styles}/All code that is likely useful for others is here.martin-tile-utils- Tile format detection, compression/decompressionmbtiles- MBTiles library + CLI
- CI warnings = errors: set env var
CARGO_BUILD_WARNINGS=deny. ALL warnings must be fixed. - Clippy pedantic enabled workspace-wide. Avoid
unwrap/panicin non-test code; preferexpectwith a clear message or proper error handling.unwrap/panicmay be acceptable in tests/examples when appropriate. - End-to-end tests:
e2e-tests/runs the builtmartin/mbtilesbinaries and snapshots what they answer.just bless-e2eto update. - Frontend-only changes
martin-ui/usenpm run devto view changes