An Android app for tracking where you have been and where your passport gets you without a visa. Offline, no account, no network permission.
Needs Android 11+ on an arm64 phone (no x86 emulators). Install steps are below.
![]() Travel map |
![]() Visa lens |
![]() Passport list |
![]() Where I can go |
![]() Stats |
Install · Features · Privacy · Data · Contributing
I tried a number of travel trackers before writing this one. Many were full of ads, and the rest did not do what I wanted. The ones that came close all selected more than you ask for — tap Denmark and you get Greenland, tap France and you get French Guiana. Beyond Borders has no ads, no account and no network permission, and is built on a dataset where those are separate places and on a data model with no parent-child link at all, so a cascade is not a bug that was fixed, it is a thing the code cannot express.
- Travel map — 252 places, tap to select, Been / Lived / Want, a visa lens and a region-completion heatmap.
- Passport list and stats — search, filters, a passport card whose headline number opens a stats screen: per-continent bars, your least-covered continent, the next milestone.
- Passport visas — where any of about 200 passports goes, offline. DE gets a full 252-place curated answer; a second passport is optional, and the easier of its two answers wins. A snapshot that can be out of date: confirm entry rules with the official source before you travel.
- Share — your travels as an image in one of three styles: the map with a caption bar, the map with a corner badge, or a numbers-only stats card.
- Home-screen widget — configurable per instance: headline metric and card background. It adds the logo, wordmark and stat tiles as it is resized. Tapping it opens the map, or the stats screen for the percent and continents widgets.
- Settings — theme (including a pure black option for OLED screens), map colours, JSON export / import, restoring from Android's backup after a reinstall, and Delete everything, which clears your places, passports and display settings.
More detail in docs/FEATURES.md.
Everything stays on your phone. The app has no network permission, no account, no basemap, no tile server and no API key; the geometry is bundled in the APK. Details in the privacy policy.
Download BeyondBorders.apk from the Releases page. Requires
Android 11 (API 30) or newer on a 64-bit ARM (arm64) device, which is nearly every phone
from the last several years.
- Open the APK on your phone. Android will ask you to allow installs from that app (your browser or file manager); this is the "install unknown apps" setting.
- Play Protect may warn that the developer is unknown. To continue, tap More details → Install anyway; you only need to do this once. The APK is signed with a fixed key, so updates install over it.
- To check the download, compare
sha256sum BeyondBorders.apkwith the contents ofBeyondBorders.apk.sha256next to it.
The app has no network permission, so it cannot check for updates itself. Watch the Releases page, or point Obtainium at this repository to be notified of new versions (Obtainium is untested with this app's release files, so treat that as a suggestion).
Requires a JDK 21 (Android Studio bundles one) and an arm64 device or emulator image with API 30+. The APK is arm64-only and MapLibre needs Vulkan, so x86 emulator images will not run it.
# macOS path shown; any JDK 21 works
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
./gradlew :app:testDebugUnitTest # host tests, no device needed
./gradlew :app:connectedDebugAndroidTest # needs a device: DB migrations, deviceId storage
./gradlew :app:installDebug # build + installThe unit tests are the useful ones to run first: they read the shipped geo and visa assets directly and assert the territory splits, the visa coverage and the colour contrast, so they catch a broken dataset without launching anything.
Tech stack: Kotlin, Jetpack Compose with Material 3, Room (KSP), MapLibre Native.
Manual dependency injection, no Hilt. Reference data is generated by Python scripts under
tools/ and bundled as assets.
- Features in depth — map colours, how passport answers work, export and import.
- Data and regenerating assets — rebuilding the geo and visa assets.
- Asset sources — provenance and checksums of every bundled asset.
- Contributing, Security, Privacy policy.
Visa rules change often and the visa data is bundled with each release, so it can be out of date. Check the official sources of your destination before you travel.
Boundaries come from Natural Earth (public domain), visa requirements from the Visa-requirements dataset (derived from Wikipedia contributors, CC BY-SA 4.0) plus hand-curated territory answers of our own, and map labels use Noto Sans (SIL OFL 1.1). Map rendering is MapLibre Native Android (BSD-2-Clause). Travel-advice links come from the German Federal Foreign Office's open data, used at build time only. Provenance and checksums are in ASSET_SOURCES.md; the full notices, including the upstream copyright text, are in THIRD_PARTY_NOTICES.md.
The code is licensed under the GNU GPL v3. The bundled data keeps its own licences, listed above. Licence texts and upstream copyright notices are in THIRD_PARTY_NOTICES.md.





