Skip to content

About

Offline Android travel tracker: mark countries as been, lived or want, and see where your passport gets you visa-free. No account, no network permission. GPL-3.0.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Beyond Borders

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.

Download APK

CI License: GPL-3.0

Travel map
Travel map
Visa lens
Visa lens
Passport list
Passport list
Where I can go
Where I can go
Stats
Stats

Install · Features · Privacy · Data · Contributing

Why

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.

Features

  • 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.

Privacy

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.

Install

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.

  1. 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.
  2. 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.
  3. To check the download, compare sha256sum BeyondBorders.apk with the contents of BeyondBorders.apk.sha256 next 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).

Build and run

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 + install

The 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.

Guides

Data and licences

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.

Licence

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.

About

Offline Android travel tracker: mark countries as been, lived or want, and see where your passport gets you visa-free. No account, no network permission. GPL-3.0.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages