Politique de confidentialité — No Panic
Date d'entrée en vigueur : À définir avant la soumission aux stores
Dernière mise à jour : 2026-05-07
Éditeur : No Panic Labs (nom de travail temporaire jusqu'à la finalisation de l'entité juridique), Ukraine.
Contact support : denysdubov88@gmail.com (également l'unique canal pour les demandes liées à la confidentialité / RGPD).
URL canonique : https://denid88.github.io/nopanic-app/privacy-policy.fr.html
Cette Politique de confidentialité explique comment No Panic Labs (« nous », « notre ») gère les informations en lien avec l'application mobile No Panic (l'« App »). En utilisant l'App, vous reconnaissez avoir lu cette Politique.
Nous avons conçu No Panic pour respecter la vie privée par défaut :
- Pas de compte, pas d'inscription, pas de connexion. L'App est entièrement anonyme.
- Pas de publicité et pas de SDK de rapport de crash. L'App ne lit pas votre identifiant publicitaire (IDFA / GAID) directement. Sur iOS, si — et seulement si — vous acceptez l'analyse, l'App présente l'invite App Tracking Transparency (ATT) d'Apple afin que Firebase Analytics puisse inclure l'IDFA dans sa mesure ; refuser l'invite ATT est pleinement respecté et l'App continue de fonctionner à l'identique.
- L'analyse est strictement opt-in. L'App utilise Firebase Analytics pour comprendre l'usage agrégé, mais la collecte est désactivée par défaut et ne s'active qu'après votre accord explicite — pendant l'onboarding ou plus tard dans Réglages → Confidentialité. Vous pouvez la désactiver à tout moment et le SDK reçoit l'instruction d'arrêter immédiatement la collecte.
- Les entrées du journal et les favoris restent sur votre appareil. Ils ne nous sont jamais transmis.
- Les services externes auxquels l'App s'adresse sont : le fournisseur d'abonnement (RevenueCat + Apple / Google) quand vous interagissez avec le paywall, Google Fonts lors du chargement de la typographie, et — uniquement si vous avez consenti — Firebase Analytics.
Lisez ci-dessous pour les détails.
1. Qui est le responsable de traitement
Le responsable de traitement est No Panic Labs, établi en Ukraine. Contact : denysdubov88@gmail.com. Nous n'avons pas désigné de Délégué à la protection des données formel — toutes les demandes liées à la vie privée passent par la même adresse.
2. Ce que l'App stocke sur votre appareil
L'App conserve les informations suivantes uniquement localement sur votre appareil. Nous ne recevons ni ne lisons ces données.
| Stockage | Contenu | Pourquoi |
|---|---|---|
SharedPreferences (iOS NSUserDefaults / Android SharedPreferences) — non chiffré |
Drapeau onboarding_completed |
Sauter l'onboarding après le premier lancement. |
SharedPreferences |
pro_entitlement_cache — instantané JSON de votre dernier droit Pro (drapeau actif, date d'expiration, drapeau de renouvellement, ID produit, drapeau d'essai) |
Afficher l'état de verrouillage correct au démarrage à froid, y compris hors ligne. |
SharedPreferences |
affirmation_favorites — IDs des affirmations que vous avez aimées |
Vous permettre de revoir vos favorites. |
SharedPreferences |
affirmation_of_day_id + affirmation_of_day_date |
Afficher une « affirmation du jour » stable. |
SharedPreferences |
analytics_consent — booléen ; false par défaut, mis à true uniquement après votre acceptation explicite |
Contrôle la collecte Firebase Analytics (voir §3.4). |
Base de données SQLite locale nopanic_journal.db, table journal_entries |
Texte du corps du journal, emoji d'humeur facultatif, horodatages de création/mise à jour, ID locale auto-incrémentée | Alimente la fonction Journal. |
Base de données SQLite locale nopanic_medication.db |
Noms de médicaments, dosages, horaires et historique des doses que vous saisissez dans le Suivi des médicaments | Alimente la fonction Suivi des médicaments. Stocké uniquement sur votre appareil ; jamais transmis à nos serveurs, à des services tiers ou à des fournisseurs d'analyse. |
| Cache audio géré par l'OS | État de lecture en cache pour les fichiers audio inclus | Lecture fluide des exercices. |
| Cache local Firebase Analytics (uniquement si le consentement à l'analyse est accordé) | Un Firebase Instance ID pseudonyme propre à l'app et une file d'événements en attente d'envoi | Tampon d'analyse entre les envois réseau. Effacé si vous révoquez le consentement ou désinstallez. |
Tout ce qui précède est supprimé lorsque vous désinstallez l'App ou utilisez l'action « Effacer les données » / « Décharger l'app » de votre système d'exploitation.
L'App ne collecte ni ne stocke :
- votre nom, adresse e-mail, numéro de téléphone ou localisation précise ;
- identifiant publicitaire (IDFA / GAID) — l'App ne lit pas l'IDFA ou le GAID elle-même. Sur iOS, lorsque vous acceptez sur l'écran de Consentement à l'analyse, l'App présente l'invite App Tracking Transparency (ATT) d'Apple pour que Firebase Analytics puisse accéder à l'IDFA à des fins de mesure ; si vous refusez l'invite ATT, ou refusez entièrement l'analyse, l'IDFA n'est jamais partagé avec Firebase. Sur Android, l'App ne demande ni ne lit le Google Advertising ID (GAID) ;
- contacts, calendriers, photos, entrées micro ou caméra ;
- historique de navigation, ou tout usage en dehors de l'App ;
- jetons push (l'App n'a pas de notifications push).
Données de médicaments — Les noms, dosages, horaires et historique des doses que vous saisissez dans le Suivi des médicaments sont stockés uniquement sur votre appareil dans la base de données locale (SQLite). Ils ne sont jamais transmis à nos serveurs, à des services tiers ou à des fournisseurs d'analyse. Des comptes d'événements anonymisés (par ex., qu'une dose a été enregistrée) peuvent être envoyés si vous avez accepté l'analyse, mais jamais le nom du médicament ni aucun détail identifiant.
3. Tiers susceptibles de traiter des données vous concernant
L'utilisation de l'App déclenche un ensemble minimal et spécifique d'interactions avec des tiers. Nous les listons exhaustivement.
3.1 Apple (App Store) et Google (Google Play)
- Ce qu'ils traitent : vos transactions d'achat et d'abonnement, les reçus de transaction, votre compte de store (Apple ID / compte Google) et toute télémétrie que votre plateforme collecte au niveau de l'OS.
- Pourquoi : facturation, gestion d'abonnement, remboursements.
- Où : régi par les politiques de confidentialité propres à Apple et Google.
- Notre visibilité : nous voyons des résultats d'achat anonymes via RevenueCat (voir ci-dessous). Nous ne voyons pas votre nom, e-mail ou détails de paiement.
3.2 RevenueCat
- Ce qu'ils traitent : un RevenueCat App User ID pseudonyme que le SDK génère sur votre appareil, vos événements d'achat, le statut d'abonnement, la plateforme et le pays, et la clé API RevenueCat utilisée. Voir la politique de confidentialité de RevenueCat pour la vue complète.
- Pourquoi : nous utilisons RevenueCat pour configurer les produits d'abonnement, vérifier si vous avez actuellement le droit
proet gérer les flux d'achat / restauration, sans construire notre propre backend de validation des reçus. - Quand l'App contacte RevenueCat : au démarrage de l'app (pour récupérer le droit actuel et le mettre en cache), à l'ouverture du paywall (pour charger les offres de produits) et lorsque vous appuyez sur S'abonner ou Restaurer.
- Où : serveurs de RevenueCat. L'infrastructure de RevenueCat est principalement aux États-Unis ; les transferts sont couverts par leurs conditions standard de protection des données.
3.3 Google Fonts (récupération de police à l'exécution)
- Ce qu'ils traitent : une requête HTTP standard vers le CDN de polices Google pour la typo « Quicksand », incluant votre adresse IP et des métadonnées de requête de base.
- Pourquoi : l'App utilise le paquet
google_fonts, qui télécharge le fichier de police à la première utilisation. Une fois récupéré, il est mis en cache localement par le paquet. - Note : si vous désactivez cela, certains textes basculeront sur des polices système. Nous pourrions livrer la police comme ressource intégrée dans une future version pour supprimer cet appel externe.
3.4 Firebase Analytics (uniquement avec consentement)
- Qu'est-ce que c'est : le SDK Firebase Analytics de Google (
firebase_core+firebase_analytics), intégré pour nous aider à comprendre l'usage agrégé — quelles fonctionnalités les gens utilisent, où les flux s'interrompent, quels exercices aident le plus. Aucun contenu brut (texte du journal, favoris, messages) ne quitte jamais l'appareil. - Modèle de consentement : désactivé par défaut. Le SDK est initialisé avec la collecte désactivée. Nous montrons un écran de Consentement à l'analyse pendant l'onboarding et exposons le même interrupteur dans Réglages → Confidentialité. Ce n'est qu'après que vous appuyez sur « Accepter » / activez l'interrupteur que nous appelons
setAnalyticsCollectionEnabled(true). Révoquer le consentement appelle immédiatementsetAnalyticsCollectionEnabled(false)et supprime tous les appels d'événements et de propriétés utilisateur dans le processus. - App Tracking Transparency (iOS uniquement) : lorsque vous acceptez sur l'écran de Consentement à l'analyse sous iOS, l'App appelle l'API ATT d'Apple (via le paquet
app_tracking_transparency) pour afficher l'invite système. Votre choix régit si Firebase Analytics peut associer l'identifiant publicitaire (IDFA) aux événements d'analyse. Si vous appuyez sur « Demander à l'app de ne pas suivre » (ou si vous aviez désactivé le suivi globalement), l'IDFA n'est jamais partagé avec Firebase — l'analyse fonctionne toujours en utilisant uniquement le Firebase Instance ID pseudonyme. Nous ne lisons jamais l'IDFA nous-mêmes. Pour notre propre mesure des taux d'opt-in, nous joignons le résultat (authorized/denied/restricted/not_determined/not_supported) en tant que paramètreatt_statusde l'événementanalytics_consent_set. Vous pouvez modifier votre choix de suivi à tout moment dans Réglages iOS → Confidentialité et sécurité → Suivi. - Ce qui est collecté (uniquement quand activé) :
- Vues d'écran (via
FirebaseAnalyticsObserverde Firebase connecté à GoRouter). - Événements produit que nous enregistrons explicitement — par ex.
emergency_tapped,panic_flow_started/panic_flow_tip_viewed/panic_flow_completed/panic_flow_exited,exercise_opened/exercise_session_started/exercise_session_completed,games_opened/game_started/game_completed/game_exited,journal_entry_saved(avec un nombre de mots par tranche comme1-25, jamais le nombre brut ni le texte),affirmation_favorited,paywall_shown/paywall_subscribe_tapped/purchase/restore_completed,settings_opened,legal_opened,support_opened,language_changed,onboarding_*,analytics_consent_shown/analytics_consent_set. La liste complète se trouve danslib/core/services/analytics_event.dart. - Paramètres d'événement limités à des métadonnées non identifiantes : IDs de scénario, indices de tips, IDs de préréglage, noms d'exercice, noms de jeu (par ex.
snake,tetris,bubble_pop,mandala,memory_pairs), scores numériques de jeu (par ex. longueur du serpent, lignes effacées au tetris, précision % bubble-pop, coups en memory-pairs), IDs produit, devise, valeur du plan, durée en secondes, pourcentage de progression, tranche de nombre de mots, source d'ouverture d'écran, code de langue source/cible, résultat ATT (att_status:authorized/denied/restricted/not_determined/not_supported). - Propriétés utilisateur :
has_pro(true / false — si vous avez actuellement le droit Pro),app_language(votre code de langue UI),onboarding_completed(true / false). - Identifiants automatiquement collectés par Firebase : un Firebase Instance ID pseudonyme (propre à l'app, réinitialisé à la désinstallation ou à la révocation du consentement), adresse IP (utilisée pour la géolocalisation approximative puis écartée selon la politique de rétention de Google), modèle d'appareil, version d'OS, version de l'app.
- Vues d'écran (via
- Ce qui n'est jamais envoyé : texte du journal, titres du journal, texte d'affirmation, contenu des tips, notes, audio lu, listes de favoris, localisation précise, identifiant publicitaire, e-mail, téléphone, ou tout identifiant lié à votre nom.
- Où : serveurs Firebase de Google (États-Unis et autres régions Google), régis par la politique de confidentialité de Google et les conditions de traitement des données Firebase.
- Rétention : nous configurons le projet Firebase pour utiliser la fenêtre par défaut de rétention des données utilisateur de Google (actuellement 14 mois pour les données au niveau utilisateur) ; les données agrégées de reporting sont conservées indéfiniment.
- Comment désactiver : Réglages → Confidentialité → interrupteur Analyse. Cela passe
analytics_consentàfalse, appellesetAnalyticsCollectionEnabled(false), et le SDK arrête la collecte sur cet appareil.
3.5 Services qui ne tournent pas
Pour la transparence, l'App n'inclut pas :
- Amplitude, Mixpanel, PostHog ou tout SDK d'analyse autre que Firebase Analytics décrit en §3.4 ;
- Sentry, Crashlytics, Bugsnag ou tout autre SDK de rapport de crash ;
- SDK publicitaires ;
- SDK de connexion sociale ;
- Facebook SDK, TikTok SDK, AppsFlyer, Adjust, Branch ou SDK d'attribution similaires ;
- services de notifications push (la messagerie FCM/APNs n'est pas intégrée, bien que Firebase Core soit présent).
4. Permissions demandées par l'App
L'App ne demande pas le micro, la caméra, la localisation, les contacts, les photos, le calendrier ou Bluetooth. Sur iOS, l'App demande la permission App Tracking Transparency (ATT) d'Apple — uniquement lorsque vous acceptez activement l'analyse sur l'écran de Consentement à l'analyse, jamais au premier lancement et jamais si vous refusez l'analyse. Le but est décrit en §3.4.
L'App joue de l'audio intégré en utilisant les API standard de l'OS. Pour activer la lecture en arrière-plan pour l'exercice Sommeil — afin que la musique continue lorsque vous verrouillez l'écran et que les contrôles de l'écran verrouillé / Centre de contrôle / Notifications restent disponibles — l'App déclare les capacités OS non interactives suivantes : sur Android, les permissions WAKE_LOCK, FOREGROUND_SERVICE et FOREGROUND_SERVICE_MEDIA_PLAYBACK et un service de premier plan de lecture multimédia (fourni par le paquet audio_service) ; sur iOS, la valeur audio dans le tableau UIBackgroundModes de Info.plist. Aucune de ces capacités n'affiche d'invite de permission interactive ni n'accorde à l'App l'accès à vos données — elles permettent uniquement au moteur audio de l'App de continuer à jouer lorsque l'App est en arrière-plan ou l'écran éteint.
5. Enfants
L'App n'est pas destinée aux enfants de moins de 13 ans et ne collecte pas sciemment de données personnelles les concernant. Si vous pensez qu'un enfant en dessous de l'âge minimum a utilisé l'App, contactez-nous pour que nous puissions aider.
6. Vos droits légaux (RGPD, UA, UK GDPR, CCPA)
Comme l'App n'associe aucune donnée à votre identité, de nombreux droits traditionnels (accès, exportation, effacement de « vos données personnelles ») ne s'appliquent pas au sens habituel — il n'y a pas d'enregistrement côté serveur lié à vous. Vous avez néanmoins le droit de :
- Accès / portabilité : exportez vos entrées du Journal manuellement en les copiant depuis l'App. Une fonction d'export intégrée n'est pas encore disponible ; contactez-nous si vous avez besoin d'aide.
- Effacement : supprimez les entrées individuelles du Journal depuis l'App ; supprimez toutes les données de l'App en désinstallant, en utilisant l'action « Effacer les données » / « Décharger l'app » / « Réinitialiser » de votre OS, ou en réinitialisant l'appareil.
- Données d'abonnement : pour les enregistrements d'achat et d'abonnement détenus par Apple, Google ou RevenueCat, veuillez exercer vos droits directement auprès de ces fournisseurs — ils sont en mesure de vous identifier par votre compte de store. Nous vous assisterons si vous nous contactez.
- Opposition / restriction / réclamation : vous pouvez vous opposer au traitement ou le restreindre. Si vous êtes dans l'UE/EEE, au Royaume-Uni ou en Suisse, vous pouvez aussi déposer une réclamation auprès de votre autorité nationale de protection des données. En France, l'autorité est la CNIL. Les résidents de Californie peuvent exercer leurs droits CCPA ; nous ne « vendons » ni ne « partageons » d'informations personnelles à des fins de publicité comportementale inter-contextes.
Pour exercer un droit, envoyez un e-mail à denysdubov88@gmail.com.
7. Base légale (UE/EEE, Royaume-Uni, Suisse)
Lorsque le RGPD ou une loi équivalente s'applique, les bases légales pour le traitement minimal décrit ci-dessus sont :
- Contrat (Art. 6(1)(b) RGPD) — fournir l'App et, le cas échéant, traiter votre abonnement.
- Intérêt légitime (Art. 6(1)(f) RGPD) — mettre en cache l'état du droit pour que l'App fonctionne hors ligne, récupérer la police utilisée par l'UI et maintenir l'intégrité du paywall.
- Consentement (Art. 6(1)(a) RGPD) — la seule base légale pour Firebase Analytics. La collecte est désactivée par défaut et n'est activée qu'après votre acceptation affirmative sur l'écran de Consentement à l'analyse (ou dans Réglages → Confidentialité). Vous pouvez retirer le consentement à tout moment avec le même interrupteur, sans effet sur votre capacité à utiliser l'App. Le retrait n'affecte pas la licéité du traitement effectué avant retrait.
8. Transferts internationaux
L'App elle-même stocke les données sur votre appareil dans votre pays de résidence. Lorsque vous interagissez avec le paywall, RevenueCat et l'App Store / Google Play peuvent transférer des données à l'international (principalement vers les États-Unis) dans le cadre de leurs propres garanties (Clauses contractuelles types et mécanismes équivalents). Si vous avez activé l'analyse, Firebase Analytics transfère également des données d'événements vers l'infrastructure de Google (principalement aux États-Unis) dans le cadre des Clauses contractuelles types de Google et mécanismes équivalents.
9. Rétention
- Données sur l'appareil : conservées jusqu'à ce que vous les supprimiez ou désinstalliez l'App.
- RevenueCat : conservées selon la politique de rétention de RevenueCat pour les données d'abonnement.
- Apple / Google : conservées selon leurs politiques respectives.
- Firebase Analytics (uniquement si vous avez accepté) : données au niveau utilisateur conservées pendant la fenêtre par défaut de 14 mois configurée sur notre projet Firebase ; les données agrégées de reporting sont conservées indéfiniment. Révoquer le consentement ou désinstaller arrête la collecte ultérieure ; les événements déjà téléchargés peuvent être supprimés sur demande (voir §6).
- Correspondance support : si vous nous écrivez à denysdubov88@gmail.com, nous gardons le fil d'e-mails jusqu'à 24 mois, puis le supprimons.
10. Sécurité
Nous maintenons le traitement côté serveur au minimum et nous appuyons sur le sandboxing d'Apple et Google pour protéger les données stockées sur votre appareil. Les entrées du Journal ne sont pas chiffrées par l'App au-delà de ce que l'OS fournit au repos ; si votre appareil prend en charge le chiffrement intégral du disque et que vous avez activé un code, vos données en bénéficient. Nous recommandons de maintenir votre OS à jour et d'utiliser un code ou un verrouillage biométrique.
11. Modifications de cette Politique
Nous pouvons mettre à jour cette Politique au fur et à mesure de l'évolution de l'App. Les modifications seront reflétées dans la date « Dernière mise à jour » ci-dessus et, si elles sont substantielles, mises en évidence dans l'App ou sur la fiche du store. L'utilisation continue après l'entrée en vigueur de la Politique mise à jour constitue une reconnaissance.
12. Contact
Questions, demandes ou plaintes concernant cette Politique : denysdubov88@gmail.com.
Annexe A — Inventaire technique (par exhaustivité)
Cette section reflète ce qu'un développeur ou auditeur verrait dans le code, afin que rien dans l'App ne soit non divulgué.
- Plateforme : Flutter (Dart
^3.11.3), distribué mondialement sur l'Apple App Store et Google Play ; nom du paquet / identifiant de bundleapp.nopanic. - Paquets tiers utilisés susceptibles de toucher le réseau ou le stockage OS :
purchases_flutter(RevenueCat),firebase_core+firebase_analytics(Firebase Analytics — soumis au consentement opt-in),app_tracking_transparency(iOS uniquement — affiche l'invite ATT système quand l'analyse est acceptée, comme décrit en §3.4),google_fonts(récupération de police à l'exécution),just_audio+audio_service+audio_session(lecture audio locale, y compris lecture en arrière-plan et contrôles écran verrouillé / Centre de contrôle / Notifications pour l'exercice Sommeil via unAudioHandlerpersonnalisé ; les autres exercices utilisent uniquementjust_audiosimple),shared_preferences(stockage clé-valeur local, y compris le drapeauanalytics_consent),sqflite(SQLite local),url_launcher(ouvre les URL externes dans le navigateur système quand vous appuyez sur Conditions, Confidentialité ou Support),package_info_plus(lit le numéro de version/build local de l'app). - URLs externes ouvertes (uniquement quand vous les touchez) : l'URL des Conditions, l'URL de la Confidentialité et le lien
mailto:de l'e-mail de Support. - Clés API : une clé SDK publique RevenueCat est compilée dans le build via
--dart-define. La configuration Firebase (GoogleService-Info.plist/google-services.json) est intégrée à la compilation. Ces clés identifient l'app, pas vous. - Aucun backend détenu par l'Éditeur ne traite de données utilisateur à l'heure de la rédaction ; les données d'analyse sont traitées par Google pour notre compte uniquement après consentement explicite.
Annexe B — Résumé de suppression des données (pour revue du store)
Si un examinateur du store demande « comment un utilisateur supprime-t-il ses données ? » :
- Dans l'App : ouvrir Journal, supprimer les entrées individuellement. Dans le Suivi des médicaments, supprimer les médicaments et les entrées de l'historique des doses individuellement.
- Désinstaller l'App, ou utiliser l'action « Effacer les données » (Android) / « Décharger l'app + Supprimer » (iOS) de votre appareil. Cela supprime toutes les données de l'App sur l'appareil, y compris les entrées du Journal, les favoris d'affirmation, le drapeau d'onboarding, le cache de droit Pro, le drapeau
analytics_consentet le Firebase Instance ID. - Pour arrêter la collecte d'analyse en cours, ouvrir Réglages → Confidentialité et désactiver l'interrupteur Analyse. Pour supprimer également les événements d'analyse déjà téléchargés, écrire à denysdubov88@gmail.com et nous initierons une demande de suppression contre le projet Firebase.
- Pour annuler ou supprimer les données d'abonnement détenues par Apple, Google ou RevenueCat, utilisez les outils de gestion d'abonnement de votre compte App Store ou Google Play, ou écrivez à denysdubov88@gmail.com pour assistance.