// the find
open-wanderer/wanderer
wanderer is a self-hosted trail database. Save your adventures!
wanderer is a self-hosted trail database. You upload recorded GPS tracks or draw new routes, attach metadata, and then search and filter the catalogue by map area and attributes. It suits people who want their trail archive on their own hardware rather than on a social platform, and small groups who want to share it.
- The stack is PocketBase for auth, storage and the admin surface, with Meilisearch handling search. That's two moving parts instead of a hand-built API layer, and most of the Go in db/hooks is business rules on top of it.
- The access rules have their own tests. db/tests/permissions covers anonymous read rules, anonymous write rules and additional read rules, and the share guard has a separate test file. Publishing location data is where a bug would hurt most, so this is the right place for coverage.
- Federation has a test per activity type (follow, like, delete, collection fetch), and the plugin system has tests for auth injection, the HTTP host surface and policy. Importers run as separate worker processes, so one misbehaving importer shouldn't take the main server down with it.
- The README covers installation and little else. It says nothing about how the federation model works, what the plugin system can reach, or what leaves the instance when a trail is shared. For software that stores where people walk, that gap matters, and I couldn't see whether the docs site fills it.
- The migration history is heavy on churn. There are well over a hundred migrations, and many are repeated updated_trails, updated_waypoints or updated_lists edits to the same collections. PocketBase collection snapshots are hard to review in a diff, so schema changes are easy to miss in review and awkward to reason about if you fork.
- Running it means two stateful services plus the PocketBase data directory, and the quick install pipes a remote script into bash. The script generates secrets, which is convenient, but you're trusting wanderer.to to serve the same script every time. The manual compose path with pinned secrets is the safer default, and the README doesn't push it.