Atlas
My travel journal, as postcards
The story
The idea
Travel photos disappear into your phone. I wanted a place where every trip gets its own page, with the story alongside and a spot on the map, that feels like a stack of postcards rather than a blog.
The design
Warm paper, passport stamps, a boarding pass with the trip details and postcards lying slightly askew. In dark mode it becomes a night train.
Under the hood
An Express API in TypeScript with PostgreSQL for the trips and MinIO for the photos. Every upload is rotated, resized to WebP and stripped of metadata on the server.

Home page with a draggable globe and passport stamps 
In dark mode it becomes a night train 
Map with a photo pin per trip
In detail
- Globe
- A draggable D3 globe with a pin per trip; click to open the trip.
- Timeline
- Trips grouped by year, filterable by tag and searchable.
- Trip page
- Story, photo gallery with lightbox, YouTube videos and a mini map.
- Editor
- Drop a pin on the map, drag and sort photos, paste text and images.
- Photo pipeline
- Up to 100 MB per photo; the server turns it into a light web version.
- Secure
- Strict Content-Security-Policy, sanitised stories and an admin login.