Out & About with Jim
Personal photo & video gallery — 140+ pieces across drone aerials, landscapes, and travel, indexed on an interactive map.
- Year
- 2024
- Role
- Independent — product, design, engineering, curation
- Status
- Live
- Stack
- Django · PostgreSQL · Nginx · MapLibre GL · FFmpeg
The problem
I shoot a lot — drone, landscape, travel — and the usual options for sharing it are bad. Instagram flattens everything, stock-photo sites don't tell a story, and most "portfolio" templates assume you only want to show ten pictures. I wanted a place that treats the work as a searchable, location-aware body of content, not a feed.
What it does
- Serves 140+ photos and videos with custom-written titles, descriptions, and location metadata.
- Renders every piece on an interactive MapLibre world map, so you can explore by place as easily as by category.
- Transcodes uploads into browser-safe web formats via FFmpeg, with responsive sources for mobile and desktop.
- Pulls recent YouTube videos onto the homepage alongside the self-hosted library.
- "Surprise Me" discovery mode for visitors who just want to browse.
What I'm proud of
First paint is instant — 94 KB of fully rendered HTML with content, not a loading spinner. A visitor sees the work before their thumb leaves the URL bar. Server-rendered Django was the right choice over an SPA here precisely because it rewards cold visitors.
Tech notes
Django + PostgreSQL on an Ubuntu VM behind Nginx. Video pipeline uses FFmpeg for multi-bitrate transcoding. Map tiles from MapTiler via MapLibre GL. HSTS, HTTPS, and content-security headers locked down at the Nginx layer.
Latest motion work
Two evergreen pieces from the @outandaboutwithjim YouTube channel — drone aerials shot, graded, and published through the same pipeline that runs the gallery. Full set on the channel.
The editor behind it
Every piece on the site is shipped through a companion project — DAM Core, a self-hosted AI-assisted editor that wraps my Immich library and publishes to this site via a dedicated ingest API. The two systems are one pipeline: the DAM is where I work, this is where it lands.