Data sent off-device
Only when you ask for it
Your location and search terms — only when a feature needs them, only to IDFM via our proxy. Plus anonymous usage and crash pings to Firebase.
France Metro is a small, transit-focused app for Paris. We built it to help you get around — not to follow you around. Here's exactly what the app reads, where the data goes, and what stays on your device. No fine print.
At a glance
Only when you ask for it
Your location and search terms — only when a feature needs them, only to IDFM via our proxy. Plus anonymous usage and crash pings to Firebase.
None
No accounts, no profiles, no databases of users. Firebase keeps anonymous aggregates — never individual records about you.
None
We don't request your IDFA, don't run ads, don't sell data, don't share with advertisers. Tracking is off in our iOS Privacy Manifest.
None
The app has no login. Firebase events use an anonymous install ID that resets when you uninstall — no name, email, or device ID we control.
How data moves
Your phone sends only the query. The Cloudflare Worker we operate adds the IDFM API key (which lives only on the Worker — never on your phone) and forwards the request. IDFM responds, the Worker passes it back, and your phone displays a route. Nothing is stored along the way.
Reads
When you tap "Use my location" or open a feature that needs your position (nearest station, routes from here, live departures near you), the app asks the operating system for your latitude and longitude. iOS and Android always ask for permission first; you can deny or revoke any time in your system settings. Coordinates are:
When you search for a station, address, or place, the typed text is sent to IDFM's geocoding service to get matching results. The query is forwarded through the same Cloudflare Worker. Recent searches are saved only on your device — clearable any time from inside the app.
Stations or addresses you save (Home, Work, custom favourites) are stored only on your device, in the operating system's secure storage (Keychain on iOS, Keystore on Android). They never leave your device.
Theme (light/dark), language (EN/FR/AR), and similar settings are stored locally. They never leave your device.
Analytics & crashes
This section explains exactly what Google Firebase does inside the app. We've chosen the most conservative settings available and disabled every advertising-related feature — the in-code consent flags adStorage, adUserData, adPersonalizationSignals are all set to denied.
We're a small project. To improve France Metro we need to know two things: which features actually help people (so we focus on what matters) and when the app crashes (so we can find and fix bugs quickly). That's it. We're not building advertising profiles, behavioural models, or anything sold to third parties.
adStorage, adUserData, adPersonalizationSignals) set to denied at every launch.setUserId. Nothing in Firebase events links to a person.kReleaseMode). Dev clicks don't pollute prod stats.Firebase data is processed by Google on its servers (typically EU/US) and is subject to Google's Privacy Policy and Firebase data-handling terms. Google retains analytics data per its standard retention settings; we do not modify those defaults.
Not collected
NSPrivacyTracking=false.Third parties
IDFM is the public-transport authority for the Paris region and the source of the live transit data the app shows you. When you use a feature that needs live data, your location coordinates and/or search query are sent to IDFM's PRIM and Instant System APIs. Their handling is governed by their privacy policy at iledefrance-mobilites.fr.
We use Google Firebase Analytics and Crashlytics to receive the anonymous events and crash reports described above. Google acts as our data processor: we configure what's collected, Google stores and aggregates it. All advertising-related Firebase features are explicitly disabled by us. See Google's Privacy Policy and Firebase's data handling overview.
Requests from the app to IDFM are forwarded through a Cloudflare Worker we operate (france-metro-idfm-proxy.mokhtarsayed72.workers.dev). Cloudflare's role is purely transport. The Worker we run does not log request bodies, coordinates, or search terms. See Cloudflare's privacy policy.
If the app displays a map, tiles are loaded from OpenStreetMap or a community provider. Your IP is visible to that provider for the duration of the tile request (as with any web request). We send no account or device identifier. See OpenStreetMap's privacy policy.
Storage
android:allowBackup="false" with strict dataExtractionRules — app data is excluded from cloud backup and device-to-device transfer unless you opt in.Security
networkSecurityConfig, iOS App Transport Security).--obfuscate + --split-debug-info) and resource shrinking on release builds.Your rights
Because we don't store personal data on our servers, most rights you'd have under data-protection laws are already exercised by default: there is no profile of you to access, correct, or delete on our side. You can also:
EEA (GDPR): the legal basis for processing your location and search query is your explicit consent (Art. 6(1)(a) GDPR), given when the app asks for permission. Anonymous analytics and crash data rely on legitimate interest (Art. 6(1)(f)) — improving the service and keeping it stable — with no advertising or profiling. Withdraw consent or object by emailing us or uninstalling the app.
California (CCPA/CPRA): we do not sell or share personal information. No "Do Not Sell" obligation because we don't sell. You retain your right to know, delete, and non-discrimination.
Children
France Metro is a general-audience transit app and is not directed at children under 13 (or under 16 where local law sets a higher age). We do not knowingly collect any data from children. If you believe a child has used the app and want to confirm what (if anything) is on their device, see "Erasure" above — uninstalling removes everything.
Changes
If we add a feature that meaningfully changes what data the app reads or where it goes (e.g. user accounts, ads, expanded analytics), we will:
Previous versions remain available on request via the contact email below.
Contact
For privacy questions, requests under GDPR/CCPA, security reports, or anything else related to this policy, write to:
Mokhtar Mokhtar
mokhtarsayed98@gmail.com