Chronomap
Four thousand years of history on one map. Scrub the epoch slider and watch borders morph, events surface and journeys replay.

- Role
- Everything: design, data pipeline, Flutter app
- Stack
- Flutter · Dart · Riverpod · flutter_map · Wikidata SPARQL
- Ships as
- Android app + web build
- Data
- Bundled seed dataset + live Wikidata queries
- 01
The idea
History apps are timelines. Geography apps are maps. The understanding lives where they cross: what was happening here, back then?
Chronomap puts an epoch slider under a world map. Drag it anywhere from 2000 BCE to today and borders morph between historical snapshots, events fade in around their dates, and the whole map re-tints from parchment to modern as you approach the present.
- 02
The build
Content is organised into modes: military history, philosophy, literature, medicine, disasters, plus live geography. Each pulls from a bundled seed dataset merged with live Wikidata queries and ranked by real-world prominence, so zooming out shows you Magellan rather than trivia. Journeys like a circumnavigation replay as animated routes.
The cartography is hand-rolled where it matters. Zoom-dependent clustering groups 86 philosophers into readable bubbles over Meiji-era Japan, and border morphing is built to survive a mapping library that keeps changing underneath it.
- 03
What was hard
Historical geodata is messy and huge. Smooth border morphing meant normalising wildly inconsistent polygon sources and interpolating between snapshots without visual tearing.
The Wikidata pipeline needed aggressive caching and prominence ranking just to stay responsive on a phone. A naive query hands back thousands of unranked entities and calls it done.



What this means for your project
Data-heavy product engineering: knowledge-graph integration, custom map rendering under real performance limits, and information design that keeps four thousand years navigable on a phone screen.