Skip to content
NavTrax Expedition OS

Technology · Data · Whitepaper

From a public endpoint to a dark phone.

Two hundred registered sources become tiles on a device with no signal by way of a license gate, a normalizing proxy, a region builder and a version pin. This page documents each stage and what it refuses to do.

What this has to solve.

Tile pipelines fail quietly, which is what makes them dangerous.

License drift. A source added during prototyping under a non-commercial license remains in production. Nobody notices until a customer uses the output commercially.

Rate-limit abuse. A public tile endpoint used at scale without caching gets the whole application blocked, usually at the worst moment.

Silent staleness. A cached region looks identical whether it is a day or three years old. The user has no way to tell, and the software has not told them.

The design, component by component.

Source registration
Every source is a record: provider, attribution, license, update cadence, coverage envelope, data type and endpoint. A source without a license field cannot be registered.
License gate
The license determines whether a source is available for commercial use and whether its endpoint may be published. This is enforced at registration, not documented in a wiki.
Type dispatch
Vector, raster, WMS, GeoJSON and API sources take different paths through the proxy, because they cache and composite differently.
Normalizing proxy
Endpoint templates are normalized to a single {z}/{x}/{y} convention, upstream rate limits are respected, and responses are cached so a public endpoint is never hit at application scale.
Region builder
A region is an area, a zoom envelope and the set of enabled layers. The size is estimated per layer before download, so a fifty-gigabyte mistake is prevented rather than discovered.
Version pin
The tile epoch is recorded per layer at download. The region list shows the age of each layer, which is how staleness becomes visible.
Render
MapLibre composites style layers in a defined order, and every visible layer is credited on screen.
Attribution surface
Non-negotiable. If a layer is rendering, its attribution is in the view.

What this guarantees.

01

License enforced at registration

Not documented and forgotten.

02

Upstream limits respected

Cached proxy, never direct at scale.

03

Size estimated before download

Per layer, before you commit.

04

Per-layer epoch recorded

Staleness is a date.

05

Attribution always visible

So a screenshot carries its own provenance.

06

User and organization sources

Registered through the same pipeline as ours.

Pipeline stages
StageInputRefuses
RegistrationProvider, license, endpoint, cadenceA source with no license field
License gateLicense termsCommercial use where not permitted
Type dispatchData typeAn unrecognised type
ProxyEndpoint templateRequests beyond the upstream limit
Region builderArea, zoom, layer setA download beyond the tier allowance
Version pinTile epochNothing — it only records
RenderStyle layersRendering without attribution

Traced, node by node.

Layer pipeline — process graph Drag to pan · ⌘/Ctrl + scroll to zoom · drag a node to rearrange

Nothing renders without its license.

This is why the layer count on the comparison page is a number we will defend.