Politique de confidentialité
1. Responsable du traitement
L'application Arpenture est éditée et exploitée par Carl Leclerc, développeur indépendant établi au Québec, Canada. Pour toute question relative à vos données personnelles ou à l'exercice de vos droits, vous pouvez écrire à support@arpenture.ca.
2. Ce que fait Arpenture (en clair)
Arpenture est une application de gamification de la couverture de rues. Elle se connecte à votre compte Strava pour récupérer la trace GPS de vos sorties (marche, course, vélo) et la compare aux rues d'OpenStreetMap pour calculer le pourcentage de votre ville que vous avez physiquement parcouru. Aucune donnée publicitaire n'est collectée et aucune donnée n'est revendue à des tiers.
3. Données collectées
3.1 — Données issues de Strava (avec votre consentement OAuth)
Lorsque vous vous connectez à Strava via Arpenture, vous nous accordez explicitement les permissions read, activity:read_all et profile:read_all. Sont alors récupérés :
- Profil athlète : identifiant Strava (numérique), prénom, nom, URL de la photo de profil.
- Liste d'activités : identifiant, nom, type (marche/course/vélo), distance, durée, dénivelé, date de départ, coordonnées de départ et d'arrivée, vitesse moyenne.
- Tracés GPS détaillés (« streams ») : séries de coordonnées latitude/longitude et horodatages des activités. Ces tracés sont nécessaires pour identifier les rues couvertes.
- Jetons d'authentification : access token et refresh token Strava, conservés exclusivement dans le Trousseau iOS (Keychain), inaccessible aux autres applications.
3.2 — Données dérivées calculées localement par Arpenture
À partir de vos tracés Strava, Arpenture calcule et stocke localement sur votre appareil :
- Les segments de rues (issus d'OpenStreetMap) que chaque activité a couverts, avec le ratio de couverture.
- Les agrégats par ville et par type d'activité : kilomètres totaux, pourcentage de couverture, date de complétion d'une ville.
- La liste des villes que vous avez visitées, déduite des coordonnées de départ des activités.
3.3 — Données fournies par vous (optionnelles)
- Pseudonyme Arpenture : 3 à 20 caractères alphanumériques. Distinct de votre nom Strava. Utilisé uniquement si vous activez le classement public.
- Opt-in classement public : bascule désactivée par défaut. Si activée, votre pseudo et vos statistiques agrégées (ville, type d'activité, %, km, temps total) sont visibles des autres utilisateurs.
- Signalements : motif et détail facultatif d'un signalement de profil que vous nous transmettez via la fonction de modération.
- Liste de blocage : identifiants Strava des profils que vous masquez. Stockée uniquement sur votre appareil, jamais transmise.
3.4 — Données techniques
Comme tout service en ligne, les serveurs auxquels l'application se connecte enregistrent automatiquement votre adresse IP au moment de la requête (journal HTTP standard, conservé selon la politique de chaque sous-traitant — voir section 6).
Arpenture ne collecte pas : votre adresse e-mail, votre numéro de téléphone, votre nom légal, vos contacts, vos photos hors photo de profil Strava, vos données de santé HealthKit, ni aucun identifiant publicitaire (IDFA). Aucun outil d'analytics, de crash reporting ou de marketing tiers n'est intégré dans cette version.
4. Finalités et bases légales (RGPD article 6)
| Finalité | Base légale |
|---|---|
| Authentifier votre compte Strava et récupérer vos activités pour calculer la couverture de rues. | Exécution d'un contrat (art. 6.1.b) — l'app ne fonctionne pas sans cette donnée. |
| Stocker vos tracés et statistiques sur votre appareil pour affichage instantané. | Exécution d'un contrat (art. 6.1.b). |
| Publier votre pseudo et vos statistiques agrégées dans le classement public. | Consentement explicite (art. 6.1.a) — opt-in désactivable à tout moment. |
| Recevoir et traiter les signalements pour modérer la communauté. | Intérêt légitime (art. 6.1.f) — sécurité et qualité du service. |
| Conserver le jeton Strava chiffré dans le Trousseau iOS. | Exécution d'un contrat + obligation de sécurité (art. 32 RGPD). |
5. Durée de conservation
- Données Strava brutes (activités et tracés GPS bruts) : 7 jours maximum dans le cache local, conformément à la clause §7.1 de la Strava API Agreement. Purge automatique à 6,5 jours.
- Données dérivées Arpenture (rues couvertes, agrégats, dates de complétion) : conservées tant que votre compte existe, car elles constituent votre historique de jeu et ne contiennent plus de données Strava brutes.
- Statistiques publiques sur le classement (Supabase) : conservées tant que votre opt-in est actif. Désactivation immédiate de l'opt-in : retrait possible à tout moment via l'écran de profil.
- Suppressions Strava reflétées sous 48 h : si vous supprimez une activité dans Strava, Arpenture la détecte et purge les rues et tracés associés au prochain rafraîchissement, et au plus tard sous 48 heures (clause §2.14.6).
- Suppression complète du compte : immédiate, voir section 7.
6. Sous-traitants et tiers
Arpenture ne revend ni ne partage vos données à des fins publicitaires. Les services suivants reçoivent les seules données strictement nécessaires à leur fonction et sont contractuellement tenus de les protéger conformément au RGPD :
| Sous-traitant | Donnée transmise | Finalité |
|---|---|---|
| Strava, Inc. (États-Unis) | Jeton OAuth, requêtes API authentifiées | Récupérer vos activités et profil avec votre consentement |
| Supabase Inc. (États-Unis, hébergement UE possible) | Pseudo, identifiant Strava, statistiques agrégées par ville (km, %, temps), signalements | Stocker le classement public et les signalements |
| Netlify, Inc. (États-Unis) | Code OAuth temporaire, refresh token (côté serveur) | Échange et rafraîchissement de jetons Strava (le client_secret reste côté serveur, jamais dans l'app) |
| OpenStreetMap Foundation — Nominatim (Royaume-Uni) | Coordonnées de départ d'activités (latitude/longitude) | Géocodage inverse pour identifier le nom de la ville |
| Serveurs Overpass API publics (overpass-api.de, overpass.kumi.systems, overpass.private.coffee) | Nom de ville (texte uniquement) | Récupérer la géométrie des rues OpenStreetMap |
7. Vos droits
En vertu du RGPD, vous disposez des droits suivants :
- Accès — obtenir une copie des données vous concernant.
- Rectification — corriger des données inexactes (votre pseudo via l'app, votre profil Strava via Strava).
- Effacement (« droit à l'oubli ») — supprimer la totalité de votre compte et de vos données.
- Portabilité — récupérer vos données dans un format structuré.
- Opposition — refuser certains traitements fondés sur l'intérêt légitime.
- Retrait du consentement — désactiver l'opt-in classement à tout moment, sans justification.
- Réclamation — saisir l'autorité de protection des données compétente (CNIL en France, Commissaire à la protection de la vie privée du Canada, etc.).
Comment exercer ces droits
- Accès et portabilité : écrivez à support@arpenture.ca ; nous répondrons sous 30 jours avec un export JSON.
- Rectification du pseudo : dans l'app, écran Profil.
- Retrait de l'opt-in classement : dans l'app, écran Profil, désactivez le commutateur. Vos statistiques publiques sont retirées du classement immédiatement.
- Effacement complet du compte : dans l'app, ouvrez les Réglages, section Zone dangereuse, bouton « Supprimer mon compte et toutes mes données ». L'opération réalise atomiquement :
- la révocation de l'autorisation OAuth auprès de Strava (
POST /oauth/deauthorize) ; - la suppression de votre profil et de vos statistiques sur Supabase (cascade automatique) ;
- la suppression de tout signalement que vous avez émis ou reçu ;
- la purge de toutes les données locales sur votre appareil (rues couvertes, tracés, ville détectées, blocages, jetons) ;
- le retour à l'écran d'accueil non connecté.
- la révocation de l'autorisation OAuth auprès de Strava (
- Désinstallation : supprimer l'application depuis votre iPhone efface également toutes les données locales. Pour révoquer aussi l'autorisation Strava et purger Supabase, utilisez le bouton ci-dessus avant la désinstallation.
8. Sécurité
Les jetons Strava sont stockés dans le Trousseau iOS avec l'attribut kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly (non synchronisé iCloud, non inclus dans les sauvegardes). Toutes les communications avec les serveurs externes utilisent HTTPS exclusivement (App Transport Security strict, sans exception). Le secret applicatif Strava (client_secret) n'est jamais distribué dans le binaire iOS — l'échange et le rafraîchissement de jetons passent par un proxy Netlify où le secret est conservé en variable d'environnement.
9. Mineurs
Arpenture nécessite un compte Strava. Strava interdit l'inscription aux personnes de moins de 13 ans (États-Unis) et de moins de 16 ans dans certains pays de l'UE. Arpenture ne vise pas les mineurs et ne collecte sciemment aucune donnée concernant un enfant en deçà de l'âge légal applicable. Si vous pensez qu'un mineur nous a fourni des données, contactez-nous : nous procéderons à la suppression sans délai.
10. Modifications
Toute modification matérielle de la présente politique sera notifiée dans l'application et la date de « dernière mise à jour » en haut de page sera incrémentée. Les changements ne peuvent jamais réduire vos droits déjà acquis.
11. Contact
Pour toute question, demande d'exercice de droits, ou réclamation : support@arpenture.ca.
Privacy Policy
1. Data Controller
Arpenture is published and operated by Carl Leclerc, an independent developer based in Québec, Canada. For any question regarding your personal data or to exercise your rights, please contact support@arpenture.ca.
2. What Arpenture does (plainly)
Arpenture is a street-coverage gamification app. It connects to your Strava account to retrieve the GPS trace of your activities (walking, running, cycling) and matches them against OpenStreetMap streets to compute the percentage of your city you have physically traveled. No advertising data is collected and no data is sold to third parties.
3. Data we collect
3.1 — Strava data (with your OAuth consent)
When you sign in to Strava through Arpenture, you explicitly grant us the read, activity:read_all, and profile:read_all scopes. We then retrieve:
- Athlete profile: Strava numerical ID, first name, last name, profile picture URL.
- Activity list: ID, name, type (walk/run/ride), distance, duration, elevation gain, start date, start and end coordinates, average speed.
- Detailed GPS streams: latitude/longitude/time series for activities. These streams are required to identify covered streets.
- Authentication tokens: Strava access and refresh tokens, stored exclusively in the iOS Keychain, inaccessible to other apps.
3.2 — Data Arpenture computes locally
From your Strava traces, Arpenture computes and stores locally on your device:
- OpenStreetMap street segments each activity covered, with coverage ratio.
- Per-city, per-activity-type aggregates: total kilometers, coverage percent, city completion date.
- The list of cities you've visited, inferred from activity start coordinates.
3.3 — Data you provide (optional)
- Arpenture nickname: 3–20 alphanumeric characters. Distinct from your Strava name. Used only if you enable the public leaderboard.
- Public leaderboard opt-in: off by default. When enabled, your nickname and aggregate stats (city, activity type, %, km, total time) are visible to other users.
- Reports: reason and optional details when you submit a profile report through the moderation flow.
- Block list: Strava IDs of profiles you've blocked. Stored only on your device, never transmitted.
3.4 — Technical data
As with any online service, the servers our app contacts automatically log your IP address at request time (standard HTTP logs, retention per each subprocessor's policy — see section 6).
Arpenture does not collect: your email address, phone number, legal name, contacts, photos other than your Strava profile picture, HealthKit health data, or any advertising identifier (IDFA). No third-party analytics, crash-reporting, or marketing tool is integrated in this version.
4. Purposes and legal bases (GDPR article 6)
| Purpose | Legal basis |
|---|---|
| Authenticate your Strava account and fetch activities to compute street coverage. | Performance of a contract (art. 6.1.b) — the app cannot function without this data. |
| Store traces and statistics on your device for instant display. | Performance of a contract (art. 6.1.b). |
| Publish your nickname and aggregate statistics on the public leaderboard. | Explicit consent (art. 6.1.a) — opt-in, revocable any time. |
| Receive and process reports for community moderation. | Legitimate interest (art. 6.1.f) — service safety and quality. |
| Store the encrypted Strava token in the iOS Keychain. | Performance of a contract + security obligation (art. 32 GDPR). |
5. Retention
- Raw Strava data (activity objects and raw GPS streams): 7 days maximum in local cache, per Strava API Agreement §7.1. Automatic purge at 6.5 days.
- Arpenture-derived data (covered streets, aggregates, completion dates): retained while your account exists, as it constitutes your gameplay history and no longer contains raw Strava data.
- Public leaderboard stats (Supabase): retained as long as your opt-in is active. Disabling opt-in: removal is immediate, accessible from the Profile screen at any time.
- Strava deletions reflected within 48 hours: when you delete an activity on Strava, Arpenture detects it on next refresh and purges associated streets and traces, no later than 48 hours (clause §2.14.6).
- Full account deletion: immediate, see section 7.
6. Subprocessors and third parties
Arpenture neither sells nor shares your data for advertising. The following services receive only the data strictly required for their function and are contractually bound to protect them in compliance with GDPR:
| Subprocessor | Data transmitted | Purpose |
|---|---|---|
| Strava, Inc. (USA) | OAuth token, authenticated API requests | Fetch your activities and profile with your consent |
| Supabase Inc. (USA, EU hosting available) | Nickname, Strava ID, per-city aggregate stats (km, %, time), reports | Store the public leaderboard and reports |
| Netlify, Inc. (USA) | Temporary OAuth code, refresh token (server-side) | Strava token exchange and refresh (the client_secret stays server-side, never in the app) |
| OpenStreetMap Foundation — Nominatim (UK) | Activity start coordinates (latitude/longitude) | Reverse geocoding to identify city name |
| Public Overpass API servers (overpass-api.de, overpass.kumi.systems, overpass.private.coffee) | City name (text only) | Fetch OpenStreetMap street geometry |
7. Your rights
Under GDPR, you have the following rights:
- Access — obtain a copy of the data we hold about you.
- Rectification — correct inaccurate data (nickname via the app, Strava profile via Strava).
- Erasure (« right to be forgotten ») — delete your entire account and data.
- Portability — retrieve your data in a structured format.
- Objection — refuse certain processing based on legitimate interest.
- Consent withdrawal — disable leaderboard opt-in any time, no justification needed.
- Complaint — file with the competent supervisory authority (e.g., Office of the Privacy Commissioner of Canada, ICO in the UK, CNIL in France).
How to exercise these rights
- Access and portability: email support@arpenture.ca; we will respond within 30 days with a JSON export.
- Nickname rectification: in-app, on the Profile screen.
- Withdrawing leaderboard opt-in: in-app, on the Profile screen, toggle off the switch. Your public stats are removed from the leaderboard immediately.
- Full account deletion: in-app, open Settings → Danger zone section → tap "Delete my account and all my data". The operation atomically:
- revokes the OAuth authorization with Strava (
POST /oauth/deauthorize); - deletes your profile and stats from Supabase (automatic cascade);
- deletes any report you submitted or received;
- purges all local data on your device (covered streets, traces, detected cities, blocks, tokens);
- returns you to the signed-out home screen.
- revokes the OAuth authorization with Strava (
- Uninstall: deleting the app from your iPhone also wipes all local data. To also revoke Strava authorization and purge Supabase, use the button above before uninstalling.
8. Security
Strava tokens are stored in the iOS Keychain with attribute kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly (not synced to iCloud, not included in backups). All communications with external servers use HTTPS exclusively (strict App Transport Security, no exceptions). The Strava application secret (client_secret) is never shipped in the iOS binary — token exchange and refresh go through a Netlify proxy where the secret is held in environment variables.
9. Minors
Arpenture requires a Strava account. Strava prohibits sign-ups by users under 13 (US) and under 16 in certain EU countries. Arpenture is not directed at minors and does not knowingly collect data about any child below the applicable legal age. If you believe a minor has provided us with data, please contact us — we will delete it without delay.
10. Changes
Any material change to this policy will be notified in-app and the "last updated" date at the top will be incremented. Changes can never reduce rights you've already acquired.
11. Contact
For any question, rights request, or complaint: support@arpenture.ca.