Last updated 7 September 2026
This policy describes how Landblink handles data.
Landblink is an Android application for airline passengers. It provides an offline moving map, flight instrumentation, and satellite reception details from the window seat. The application is distributed as a direct Android package (APK) download and is installed manually by sideloading. It is not distributed through Google Play.
Landblink is made and operated by one person, not a company. The operator's name and postal address are available on request through the contact route below, and will be published here before Landblink is offered on any app store.
Landblink is built to run offline. The phone is the primary database.
All recordings, flight logs, sensor data, and saved flight schedules are stored locally on your device in private application storage. The application does not require an account. It does not ask for your name, email address, phone number, or social media profile.
You can use the application throughout an entire flight without an active internet connection. Nothing is uploaded during normal operation unless you choose to enable the optional flight contribution feature.
The application reads several device sensors and files to generate flight telemetry. These remain on your phone:
The application requests only permissions needed for passenger flight tracking:
ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION). Required to compute position and display flight telemetry. Recording runs as a foreground service with an ongoing status notification (FOREGROUND_SERVICE_LOCATION). Landblink does not request or use background location permission (ACCESS_BACKGROUND_LOCATION). Location is read only while the app is active or while a flight recording is running.CAMERA). Optional. Used exclusively to scan boarding pass barcodes in the flight setup screen. If you decline camera access, you can still enter flight details manually or import a digital pass file.POST_NOTIFICATIONS). Optional on Android 13 and newer. Used to display current flight status, speed, and phase in the Android notification drawer while recording.INTERNET, ACCESS_NETWORK_STATE). Used before flight on Wi-Fi or cellular networks to fetch optional public satellite orbit products, route weather forecasts, and to transmit contributed flights if enabled.Landblink includes an optional community feature called "Contribute my flights". When enabled, the app uploads completed flight tracks to the backend server to build crowdsourced typical route corridors.
Contribution is disabled by default. The application will never upload flight recordings without your affirmative choice. You can opt in through a setup prompt or via the toggle in the Setup screen under "Cloud backend".
Under European data protection law (General Data Protection Regulation / GDPR), the lawful basis for processing this contributed data is your consent under Article 6(1)(a).
Consent is verified immediately before each upload begins. If you turn contribution off, the app checks your preference before initiating any network transfer and will not start an upload. Network requests already transmitted across the network cannot be cancelled mid-flight.
When contribution is enabled, a completed flight upload contains:
deviceId).clientFlightId), used to prevent duplicate processing.An upload does not include your name, device hardware identifiers (such as IMEI or MAC address), or user account details.
To protect privacy at departure and arrival locations, Landblink withholds the airport ends of every contributed track.
Before data leaves your phone, the application calculates the first and last recorded points. It removes all coordinates located within 15 kilometers of the starting point, and all coordinates located within 15 kilometers of the ending point.
The gate, the taxi route, the runway rollout, and the initial climb stay on your device. The touchdown, rollout, and arrival stand stay on your device. Coordinates outside the 15-kilometer boundary are transmitted as recorded. Points are removed, never fuzzed or altered.
If an entire flight is shorter than 30 kilometers, the entire track falls within the withholding circles. In that case, the track is withheld completely and the upload is cancelled.
The installation identifier is a public one-way hash derived from a 256-bit cryptographic credential generated on your device. It is stored in local encrypted storage.
This identifier remains stable across uploads from the same installation. Because multiple flights share the same identifier, separate uploads from your phone can be linked together on the server. Combined with publicly available airline passenger manifests or flight schedules, linkable flight tracks could potentially identify an individual passenger.
For this reason, Landblink treats contributed flight data as pseudonymous personal data rather than anonymous data. We do not claim this data is anonymous.
Reinstalling the application or clearing application storage deletes the credential and generates a new, unrelated installation identifier.
When your device has network connectivity, the application may make the following requests:
These download requests transmit the installation identifier for authentication and rate-limiting. They do not transmit your location or personal recordings.
Data retention depends on where the data resides:
Under applicable data protection laws, including the GDPR, you have rights regarding your personal data:
The Landblink backend runs on a virtual private server (VPS) located in the European Union or the United States.
If you access the application or contribute flight data from outside the server's host jurisdiction, your pseudonymous data will be transferred across borders to the server location. Technical safeguards include encrypted transport (HTTPS/TLS) and token-based authentication.
Landblink is an independent personal project, developed and operated by one person.
For privacy inquiries, questions about data handling, or data subject requests, please contact:
Contact: github.com/leonaffi-byte/flygps/issues
The following literal placeholders appear in this document and must be replaced with verified details:
This document reflects the application codebase. Where earlier project briefs or informal summaries differed from the codebase, the code was treated as the authoritative source of truth:
UploadFlight and TrackPoint in FlightUploader.kt) includes bearing (bearingDeg), a dead-reckoning status flag (isDeadReckoned), and a client flight ID (clientFlightId) used as an idempotency key, in addition to coordinates, altitude, speed, flight number, airports, and timestamps.TerminalAreaTrim.kt, the 15 km trim rule withholds all points within 15 km of the initial point and 15 km of the final point. If a track's total span is shorter than 30 km (twice the radius), all points are withheld and the uploader discards the upload due to insufficient usable points.FlightUploader.kt, contribution consent is re-read immediately prior to dispatching the network request. If a request is already transmitted across the network socket, it is not cancelled in flight.DELETE /v1/contributions in server/src/flights/routesHttp.ts and contributions.ts) authenticates using the private bearer token stored in Android Keystore. It purges all records tied to that specific installation credential. Legacy unauthenticated contributions cannot be purged via this credential and require manual operator verification.