About This Site
This is a hand-built photography portfolio. No WordPress, no Squarespace, no template. Everything you see — the layout, the galleries, the lightbox, the search — was written from scratch specifically for this site. This page explains how it works and what you can do with it.
The galleries
The work is organized into three main galleries — Portraits, People, and Places — each a vertical masonry grid that loads as you scroll. Images are sequenced by hand rather than chronologically, so the order is intentional.
Beyond the main galleries, there are Albums: smaller, focused collections organized around a specific project, location, or subject. Some albums are unlisted — they exist and are shareable via a direct link, but won't appear in the index. If someone sent you a link to an album, that's likely what it is.
Finding photos
There are a few ways to dig deeper than the main galleries:
- Search — press / or ⌘K from anywhere on the site. It searches photo titles, captions, keywords, journal posts, and static pages simultaneously. Results update as you type.
- Keywords — each photo can have subject keywords attached. Clicking a keyword on a photo detail page shows all photos tagged with it.
- Metadata browsing — photos are indexed by camera body, lens, focal length, aperture, shutter speed, ISO, date, and location. Follow any of those fields on a photo detail page to see everything shot under the same conditions.
- Location — clicking a location segment on a photo detail page searches across location name, city, state, and country, so a search for "Oregon" will turn up everything shot in the state regardless of how specifically it was tagged.
The lightbox
Clicking any image in a gallery opens a full-screen lightbox showing the original, full-resolution file. A few things worth knowing:
- Navigate between images with ← and →, or swipe left and right on mobile.
- Press D or click View details to jump to the full photo detail page.
- If the image has a caption, it appears briefly in the lower right when you open it. Move the mouse to keep it visible; it fades with the rest of the chrome after a few seconds of inactivity.
- Press Esc to close.
Photo detail pages
Every photo has its own page (e.g. /photos/42) with the full metadata: camera body, lens, focal length, aperture, shutter speed, ISO, and date. If GPS data was embedded in the file, a collapsible map shows exactly where it was taken — the map only loads when you open it. Photos belonging to public albums list them at the bottom of the page, and if you arrived from an album, navigation stays scoped to that album.
If a photo has a title, a licensing inquiry link appears on its detail page. All images on this site are available for editorial and commercial licensing — write to licensing@timtrautmann.com to ask.
The journal
The Journal is a separate blog running on Ghost, served under the same domain at /blog. Membership is free — subscribing gets you new posts by email. Comments are enabled on journal posts and are also handled by Ghost. Signing in or subscribing from anywhere on the site uses the same account.
A few small things
- Dark and light mode — the site follows your system preference by default. Press T anywhere to toggle manually; the choice is remembered in your browser.
- Keyboard shortcuts — press ? for the full list.
- Weather — the homepage shows live conditions from a personal weather station in Portland. Temperature, humidity, wind, and today's sunrise and sunset are updated every few minutes.
- Save contact — the About page has a link to download a vCard with contact details, ready to add to your contacts app.
- RSS — the journal has a feed at /blog/rss/.
Under the hood
For the technically curious: the portfolio runs on Node.js with Express and Handlebars for templating. Photos are stored in SQLite and processed with Sharp — thumbnails, medium variants, and 1200×630 OG crops are generated automatically on upload. Full-text search uses SQLite's built-in FTS5 engine with BM25 ranking. Location maps are powered by Mapbox and lazy-loaded only when opened. The blog is Ghost running in a separate Docker container behind the same Nginx reverse proxy. No client-side framework; no build step; no tracking.
Privacy
The short version: this site doesn't track you. No analytics, no ad networks, no fingerprinting. The longer version is in the Privacy Policy.