My travel journal, as postcards
Atlas
A personal travel journal: every trip a postcard with photos, a story and a pin on a spinning globe. With its own editor for adding and editing trips.
- Node.js
- Express
- TypeScript
- PostgreSQL
- MinIO
- sharp
- D3
- Leaflet
- Docker

01
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.
02
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. Everything in two languages and usable on your phone.
03
Under the hood
An Express API in TypeScript with PostgreSQL for the trips and MinIO for the photos. Every upload, even straight from the camera, is rotated, resized to WebP and stripped of metadata on the server. The database runs separately with daily backups to off-site storage.
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.
