Walden is a field notebook for bird photography. It keeps track of where I walk, what I see, what I photograph and what the conditions were like, and then uses all that to answer the question I actually care about: where should I go, and when, if I want to photograph a particular bird? There’s an iPhone app for out in the field, a web journal for back home, and a server that talks to the bird databases.
I didn’t write my own GPS tracking from scratch. Walden is built on GeoPulse, an open-source location tracker, with the birding added on top. The phone app works without signal: everything saves on the phone and syncs when it can, and it can never create duplicates. If something’s only on the phone so far, it says “Saved on this iPhone”, not “Synced”, because I want to know exactly where my data is.
Everything keeps track of where it came from. Photos link to my Immich library, and each photo’s location says whether it came from the camera, the GPS track, or me. Weather is saved at the time. Species come from the official world bird list (11,227 of them, in English and Dutch).
Specs
| Status | Private, personal use. Backend M0–M5 merged, M6 (bird intelligence) implemented with review pending. iOS app v0.2 running on your phone |
| Dates | Aug 11 – 16, 2026 |
| Repo | Private walden, 232 commits |
| Stack | SwiftUI + SwiftData (iOS), Vue (web journal), Java + PostgreSQL/PostGIS (backend, on a GeoPulse v1.36.2 fork) |
| Code | ~25,800 lines of Swift (93 files); ~15,700 lines of Java for Walden’s own packages (GeoPulse excluded) |
| Tests | 701 unit + 461 integration tests at M2 (47 birding-specific); 14 XCTests for the offline invariants |
| Data | IOC v15.2 (11,227 species), GBIF live, eBird (off until you add a key), Observation.org (stub, waiting on OAuth access) |
| Maps | Mapbox Maps SDK v11; routing planned on self-hosted Valhalla |
| QA | 39 defects logged on Aug 16 (4 P0, 15 P1, 20 P2); fix batch landed |
| Related | birdy: Python CLI that turns tagged photos into an eBird checklist CSV |
| Not yet | App Store, offline map download, on-device photo matching, a full field test |