Open Knowledge Foundation
TimeMapper
A side-by-side timeline and world map for the full family chronology — from Palmer's birth in Cando, North Dakota in 1912 to Dean Lloyd's birth in Minnesota in 2025. Scroll the timeline, watch the map animate.
Live Family Timeline
41 events · 113 years · 6 generations · 14 countries and states. Click any event to pan the map — or click a map marker to jump to that event.
Self-hosted replacement for timemapper.okfnlabs.org (retired 2025). Built with Leaflet.js + CartoDB tiles. Data from family-timemapper.csv.
Data Format
TimeMapper reads a CSV with the following columns. Required fields are highlighted.
| Column | Required? | Description | Example |
|---|---|---|---|
| Title | Required | Event headline shown on the timeline card | Palmer & Signe Wed |
| Start | Required | Start year, or full date (YYYY-MM-DD) | 1940 or 1969-12-28 |
| End | Optional | End year for ranged events (e.g. a multi-year stay) | 1996 |
| Location | Required | Place name — TimeMapper geocodes this automatically | Cambridge, Ohio |
| Description | Optional | Body text on the timeline card | Amy attends Boyd Technical School… |
| Link | Optional | URL shown as a "Read more" button on the card | https://stadum.family/people/amy-lloyd/ |
| Media | Optional | Image or video URL to display on the card | https://stadum.family/assets/media/images/… |
Geocoding: TimeMapper uses the Location field to geocode each event automatically using Nominatim. Specific place names like "Cambridge, Ohio" and "English Harbour, Antigua" geocode correctly. Country-only names like "France" or "Norway" resolve to the country centroid.
Embed on Any Page
Copy the iframe below. Replace the CSV URL with any publicly hosted CSV that matches the data format above.
<!-- TimeMapper embed — Stadum Family Timeline --> <iframe src="https://timemapper.okfnlabs.org/embed?url=https://stadum.family/lab/data/family-timemapper.csv" width="100%" height="650" frameborder="0" allowfullscreen loading="lazy" title="Stadum Family Timeline" ></iframe>
To update the data
- Edit
/lab/data/family-timemapper.csvin this project. - Deploy to Netlify — the public URL stays the same.
- TimeMapper fetches fresh CSV on each page load — no cache busting needed.
Using Google Sheets instead
TimeMapper also reads Google Sheets directly. Publish your sheet as CSV (File → Share → Publish to web → CSV) and paste the resulting URL into the embed src parameter.