Provenance
A live globe of public open data
TypeScript, Next.js 15, React 19, MapLibre GL

Governments and agencies publish live data for free, in formats that few people can read. Provenance draws those feeds on one globe that flattens into a map. Every layer carries a card with its publisher, its method, a confidence class and a limitation.
-
A map layer with no stated limitation fails the build.
The file tests/
unit/ signals-explain.test.ts -
When a camera feed fails, the map keeps the last good cameras of that feed. It shows no invented data.
The file lib/
sources/ registry.ts -
Camera pictures reach the browser through a closed proxy with a list of allowed hosts.
The file lib/
proxy/ allowlist.ts -
One slow feed has its own time budget of 60 seconds. The number comes from a measurement.
The file lib/
sources/ registry.ts -
Production runs as one Node process, so one read gives one camera count.
The file deploy/
provenance.service
- 405 unit test files at commit e1efc15. tests/
unit - 92 stars and 15 forks on GitHub on 8 October 2026.
- Licence: AGPL-3.0 for the code. Each data source keeps its own terms. LICENSE

The console at /app, world view. 
A raw earthquake record beside the pin that it becomes. 
One camera page. The still is from TfL Open Data.















