Langbortistan.com
Three decades of family travel, turned into a world map you can click through
- Role
- Designer & Developer
- Year
- 2024
- Client
- Private family project
- product design
- design engineering
- web
I designed and built an interactive travel map for a Danish family of four: 91 trips across 68 countries plotted on a D3 world map, where every visited country opens the photo, the year, and who came along.
01
My role
- Product Design
- Visual Design
- Frontend Development
- Data Modeling
- Headless CMS Setup
02
The problem
A family that had been travelling since the mid-nineties had three decades of trips scattered across photo albums and folders, with no way to see the whole of it at once. Chronological albums answer what we did last summer, but not where have we actually been, and certainly not which of these countries has each of us seen. They wanted the map itself to be the interface rather than an illustration sitting next to a list, and they wanted to keep adding trips themselves, without a developer in the loop.
03
The process
I designed and built the site as a single full-bleed map. Country shapes render from a GeoJSON file through a D3.js v7 Mercator projection with zoom and pan, and visited countries are filled in warm cream against unvisited slate so the shape of the family's travel reads instantly. Clicking a visited country opens that trip: the photograph, the year, the caption, and the avatars of whoever was there. Clicking a family member filters the map down to their countries and recounts the total in the header. Content lives in WordPress, which the family already knew, exposed through WPGraphQL as two custom post types, Trips and Persons, so the front end stays vanilla HTML, CSS and JavaScript with Vite for local development and a static build. The fiddliest part was the map data itself: the 187-feature GeoJSON is hand-tuned, splitting the UK into its constituent countries, separating French Guiana from France, and carrying custom IDs for Svalbard, Kosovo, Somaliland and Northern Cyprus, with a plain-text country index kept in lockstep so the two can never drift apart.
04
The outcome
The map now holds 91 trips across 68 countries, the earliest dating back to 1994, and the family adds new ones themselves in WordPress with nothing to deploy. The person filter turns it into a second tool entirely: selecting one family member drops the counter from 68 countries to just theirs and relights the map accordingly, which makes it as much a family record as a travel log.
- 91 trips across 68 countries, back to 1994
- Per-person filtering across four family members
- 187-country GeoJSON, hand-tuned for constituent and contested territories
- Vanilla JS front end, headless WordPress behind it