rafael.francisco ~/journal/photo-location-recorder
2026-06-21 software · 1 min read

Photo Location Recorder: matching photos to places, on-device

My camera takes better photos than my phone, but it has no idea where it is. This is the story of the small app I built to fix that — without sending a single coordinate to a server.

Every landscape photographer with a dedicated camera knows the ritual: you come home with three hundred frames and no memory of which ridge, which bend of the river, which nameless dirt road they came from. GPS add-ons are expensive and eat batteries. Phone apps that track you all day usually mean someone else's cloud.

So the requirements wrote themselves: record a location timeline all day, keep it entirely on the device, and sip — not drink — the battery. SwiftData handles storage, and significant-location-change monitoring does the heavy lifting, waking the app only when it matters.

The interesting part was the matching. Camera clocks drift, time zones lie, and daylight saving exists purely to ruin metadata. The importer cross-references EXIF timestamps against the timeline with a configurable tolerance window:

let window = TimeInterval(tolerance * 60)
let match = timeline.nearest(to: exif.date,
                             within: window)
photo.coordinate = match?.coordinate

It shipped this spring. It will never trend on the App Store, and that's fine — it solves one problem completely, which is the only kind of app I know how to enjoy building.