Work / Cultural Atlas
Cultural Atlas
A world map, timeline and calendar of cultural events that shows how certain each date and source really is.
What it does
You ask what is happening in a place, or on your dates. The server answers map, timeline, country-by-month and preference-match queries over a catalogue of 1,747 dated occurrences, and a React and MapLibre interface draws the results. Each record carries its evidence state (confirmed, calculated, expected or pending), and the interface shows that state instead of hiding it.
- Ask what is happening in a place, or on your dates
- The server answers map, timeline and calendar queries over the catalogue
- The map, activity view and density timeline draw the answer
- Every record shows how certain its date and source are
- Share the exact view as a link
How it works
Cultural Atlas joins provenance-aware cultural records with real context: climate from Open-Meteo and indicators from the World Bank. A citation is not treated as a fetched source, and a calculated date is not shown as confirmed. The map, the Gantt-style activity view and a canvas density timeline all read the same URL-backed state, so any view can be shared as a link. A measured performance problem was fixed by separating places that never change from dated events.
Skills shown
- Data engineering
- Joins cultural records with Open-Meteo climate and World Bank indicators, keeping each record’s evidence state.
- APIs & backend
- A Node server answering map, timeline, country-by-month and preference-match queries.
- Testing & QA
- A regression test guards the map after a silent bundler change left it blank.
- Frontend, 3D & graphics
- React, TypeScript and MapLibre map, timeline and calendar views that share URL-backed state.
Worth knowing
- A citation is not treated as a fetched source: of 1,240 cited sources the system has retrieved 7, and the interface says so.
- Splitting fixed places from dated events cut each timeline-scrub update from about 816 kB to about 2 kB, and from 30 requests to one.
- Found a map that rendered nothing because the bundler had broken MapLibre's worker URL without raising an error. The URL is now wired explicitly and a test guards it.
- With no stated preference there is no ranking. The match view never invents a fake best option.
- Any view can be shared as a link, because the application state lives in the URL.