Responsable du traitement
Le responsable du traitement est Cahyss Khantache, personne physique exploitant TrapMate en son nom propre. Adresse : [À COMPLÉTER AVANT PUBLICATION]. Pour toute demande relative aux données personnelles : cahyss.khantache@gmail.com.
Compte et authentification
Pour créer et gérer un compte, TrapMate utilise Supabase Auth. Les données concernées sont l’identifiant utilisateur, l’adresse e-mail, le fournisseur de connexion, les dates techniques du compte et les éléments nécessaires à la confirmation d’adresse e-mail, à la connexion et à la réinitialisation du mot de passe.
Lors d’une inscription par e-mail, le pseudo demandé est également transmis à Supabase comme métadonnée d’inscription afin d’initialiser le profil TrapMate.
Avec la connexion Google, Google traite la demande d’authentification et transmet à Supabase les informations autorisées par l’utilisateur. L’application exploite notamment l’adresse e-mail, le fournisseur et, lorsqu’elle est disponible, l’URL de l’avatar ; les autres métadonnées d’identité conservées par Supabase dépendent des informations remises par Google. Le mot de passe d’un compte créé par e-mail est géré par Supabase Auth ; il n’est pas enregistré dans la table de profil publique de TrapMate.
Finalité : créer, authentifier et sécuriser le compte. Base légale retenue : exécution du service demandé par l’utilisateur et mesures précontractuelles associées à la création du compte.
Profil utilisateur
La table de profil Supabase peut conserver le pseudo TrapMate, la biographie, un avatar importé sous forme de données d’image, ainsi que les dates de création et de mise à jour. Ces champs sont facultatifs à l’exception du pseudo demandé dans le parcours de profil.
Lorsqu’un compte Chess.com est associé, TrapMate conserve les données publiques renvoyées par l’API Chess.com : pseudo normalisé et pseudo affiché, URL du profil, URL de l’avatar, titre et statut éventuels, classements rapid, blitz et bullet disponibles, état de la récupération et dates de mise à jour. Le pseudo saisi est envoyé à l’API publique Chess.com par le serveur TrapMate.
Ces données servent à personnaliser le profil et à afficher l’association demandée. Les profils complets restent lisibles dans Supabase uniquement par leur propriétaire. Le feed communautaire expose toutefois, par l’intermédiaire du serveur TrapMate, le pseudo et l’avatar associés aux seules réussites publiées. Il ne constitue pas un annuaire public de profils et n’expose pas l’adresse e-mail.
Progression et préférences de jeu
Pour les comptes connectés, Supabase conserve l’identifiant utilisateur, l’identifiant et le slug du piège, l’état favori, le nombre de réussites en révision et la date de mise à jour. Ces données servent à retrouver les favoris, synchroniser la progression et calculer les pièges maîtrisés.
Le navigateur conserve aussi localement certains favoris, votes « utile », réussites de révision, données de profil historiques et marqueurs d’import. Lorsqu’un utilisateur le demande, les données locales compatibles peuvent être importées dans son compte sans diminuer une progression déjà synchronisée.
Base légale retenue : exécution des fonctionnalités demandées. Les données stockées uniquement dans le navigateur restent sur l’appareil tant que l’utilisateur ou le navigateur ne les efface pas.
Cacahuètes et parrainage
Pour fournir le solde fictif de Cacahuètes, Supabase conserve un registre de transactions comprenant l’identifiant du compte bénéficiaire, le montant, le motif, un identifiant d’événement unique, la date et l’état de lecture d’une éventuelle notification. Le registre ne contient pas les coordonnées bancaires et ne donne aucune valeur monétaire aux Cacahuètes.
Chaque compte reçoit un code de parrainage opaque. Lorsqu’un nouveau compte est créé à partir d’un lien conservé dans le navigateur, TrapMate enregistre les identifiants Supabase du parrain et du filleul, le code utilisé et l’état du parrainage. Les transactions de récompense ne sont créées qu’après trois pièges terminés par le filleul. Le profil du parrain affiche uniquement des totaux ; aucune identité de filleul n’y est publiée. Ces données servent à attribuer une seule récompense et à prévenir les doublons et l’auto-parrainage.
Base légale retenue : exécution de la fonctionnalité de parrainage demandée et intérêt légitime de TrapMate à sécuriser son système de récompenses contre les abus.
La boutique conserve les articles débloqués, leur prix en Cacahuètes, la date d’achat et les préférences cosmétiques actives. Pour une récompense à remise manuelle, elle conserve aussi un statut de traitement et une note administrateur éventuelle. Les codes créateur conservent l’identifiant du compte, le code utilisé, la transaction associée et la date, afin d’empêcher une seconde utilisation.
Votes communautaires
Le vote est réservé aux comptes connectés. Le serveur conserve l’identifiant du vote, le piège choisi, l’identifiant du compte Supabase et la date du vote afin de limiter chaque compte à une voix définitive par duel, de calculer les résultats et d’attribuer une seule fois la récompense prévue aux comptes ayant choisi l’unique gagnant.
Le code du vote ne place ni adresse IP ni chaîne de navigateur dans le bulletin stocké. Les requêtes HTTP restent toutefois visibles par l’hébergeur dans le cadre normal de l’exploitation technique. Base légale retenue : exécution de la fonctionnalité demandée et intérêt légitime à garantir un vote cohérent et à prévenir les doublons.
Soutiens via Stripe
Le paiement, ponctuel ou mensuel selon l’option choisie, s’effectue sur Stripe Checkout. Stripe reçoit et traite les données de paiement nécessaires à la transaction. TrapMate ne stocke pas directement les numéros de carte bancaire.
Après vérification du webhook Stripe, TrapMate conserve uniquement un identifiant interne, l’identifiant de session Checkout, l’identifiant PaymentIntent lorsqu’il existe, le montant total brut en centimes, la devise, le statut de paiement, le mode test ou live et la date d’enregistrement. Ces données servent à dédupliquer les événements vérifiés et à calculer la progression agrégée des TrapGoals. Elles ne sont pas reliées à un identifiant de compte TrapMate dans la base actuelle.
Base légale retenue : exécution de la démarche de soutien demandée, intérêt légitime à sécuriser et comptabiliser les paiements, et respect des obligations légales applicables lorsqu’elles existent.
Réussites « Ils l’ont fait ! »
Lorsqu’un utilisateur connecté partage une réussite, TrapMate conserve son identifiant de compte, le piège concerné, l’URL publique de la partie Chess.com ou Lichess, la plateforme détectée, le commentaire facultatif, le statut de modération et les dates techniques de la publication. Le feed affiche le pseudo et l’avatar de profil disponibles.
Une réaction feu conserve l’identifiant de la publication, l’identifiant du compte et sa date. La contrainte d’unicité empêche un même compte de réagir deux fois à la même publication. Ces données servent à publier le feed, compter les réussites et réactions, permettre la suppression par l’auteur et assurer la modération. Base légale retenue : exécution de la fonctionnalité demandée et intérêt légitime à modérer les contenus publics.
Données techniques et mesure d’audience
Vercel héberge TrapMate et reçoit les données techniques nécessaires pour servir les requêtes, telles que l’adresse IP, l’URL demandée, la date, le type de navigateur et les informations de requête. Les journaux applicatifs peuvent également contenir des erreurs techniques ainsi que des identifiants d’événements Stripe et leurs informations non bancaires utiles au diagnostic.
Vercel Web Analytics est chargé sur toutes les pages par le composant global@vercel/analytics/next. Aucun événement personnalisé Vercel n’est envoyé. Le service mesure les chargements de page et les navigations internes et peut enregistrer l’horodatage, le chemin et ses paramètres filtrés, la page référente, une géolocalisation approximative, le système, le navigateur, le type d’appareil et la version du script.
TrapMate enregistre séparément dans Supabase un volume limité d’événements métier pour les comptes connectés : création de compte, connexion, ouverture, démarrage ou réussite d’un piège, action communautaire, ouverture ou achat dans la boutique, utilisation d’un code et validation d’un parrainage. Une ligne contient l’identifiant Supabase, le nom de l’événement, le piège concerné lorsque pertinent, une clé de déduplication, des propriétés techniques limitées et la date. Aucun e-mail, pseudo, avatar ou adresse IP n’est ajouté à cette table, et aucun identifiant visiteur anonyme supplémentaire n’est créé pour ce suivi métier.
Selon la documentation Vercel Web Analytics consultée, ce service n’utilise pas de cookie, agrège les données et identifie temporairement une visite par un condensat issu de la requête, supprimé après 24 heures. Aucun Google Analytics, pixel publicitaire, outil de rejeu de session ou autre SDK de mesure n’a été détecté dans le projet.
Destinataires et prestataires
Les destinataires techniques réellement détectés sont :
- Supabase, pour l’authentification, les profils, la progression et la base de données ;
- Vercel, pour l’hébergement, les requêtes, journaux techniques et Web Analytics ;
- Stripe, pour Checkout, les paiements et leur prévention de la fraude ;
- Google, uniquement lorsque la connexion Google est choisie, pour les avatars Google affichés et pour la messagerie de contact Gmail ;
- Chess.com, lorsque l’utilisateur demande l’association de son pseudo public.
Les liens vers YouTube, TikTok, Twitch, Instagram et Discord sont de simples liens sortants : aucun lecteur, widget ou script de ces réseaux n’est intégré aux pages. Une transmission à ces services intervient seulement lorsque l’utilisateur choisit de les ouvrir, selon les règles du service concerné.
Durées de conservation
Le code ne met actuellement en œuvre aucune purge automatique du compte, du profil, de la progression, des références Stripe ou des bulletins de vote. Les messages reçus par e-mail sont gérés séparément dans la messagerie de contact. La politique de conservation retenue est la suivante :
- compte, profil et progression synchronisée : pendant l’activité du compte. TrapMate a pour objectif de supprimer ces données après 24 mois d’inactivité, avec un avertissement 30 jours avant. Le suivi de l’inactivité, l’avertissement et cette purge ne sont pas encore automatisés ;
- bulletins de vote pseudonymisés : 24 mois après le vote, puis suppression de l’identifiant du votant. Des résultats agrégés réellement anonymisés pourront être conservés sans durée fixe. Cette purge et cette anonymisation ne sont pas encore automatisées ;
- publications « Ils l’ont fait ! » et réactions : pendant l’activité du compte ou jusqu’à leur suppression par l’auteur ou l’éditeur ; une publication masquée reste conservée le temps nécessaire à sa modération ;
- code de parrainage, relation de parrainage, registre de Cacahuètes, achats et préférences cosmétiques : pendant l’activité des comptes concernés. Les contraintes Supabase suppriment ces données liées avec leur compte propriétaire, ainsi que la relation si le parrain ou le filleul est supprimé ;
- événements analytics métier Supabase : 13 mois après l’événement, puis suppression. Cette purge n’est pas encore automatisée ;
- messages reçus à l’adresse de contact : 24 mois après le dernier échange, sauf conservation plus longue nécessaire à la constatation, à l’exercice ou à la défense de droits en justice ;
- références techniques des soutiens Stripe : pendant la durée nécessaire à la déduplication et au suivi des soutiens, puis, pour les informations qui doivent l’être, pendant la durée requise par les obligations comptables, fiscales ou probatoires applicables. Aucune durée chiffrée supplémentaire n’est affirmée pour la table technique TrapMate.
Les durées techniques déjà déterminées sont les suivantes : 15 minutes pour le cookie de récupération de mot de passe et 30 jours pour le cookie de parrainage. La version installée de Supabase SSR attribue jusqu’à 400 jours à ses cookies d’authentification ; ce plafond du cookie n’est pas une durée de conservation du compte. Dans la configuration actuelle, une session reste renouvelable jusqu’à la déconnexion, l’expiration ou un autre événement qui y met fin.
TrapMate est actuellement hébergé sur l’offre Vercel Hobby. Vercel annonce une conservation d’une heure pour les journaux d’exécution. Pour Web Analytics, le condensat temporaire de visite est supprimé après 24 heures et la fenêtre de consultation garantie des statistiques agrégées est d’un mois sur cette offre. Vercel précise que des données Analytics peuvent être conservées au-delà de cette fenêtre de consultation.
Suppression du compte
L’interface TrapMate ne propose actuellement aucun bouton de suppression de compte en libre-service. Une demande peut être adressée à cahyss.khantache@gmail.com. Une vérification de l’identité du demandeur peut être nécessaire en cas de doute raisonnable. TrapMate se fixe un objectif opérationnel interne de traitement sous sept jours ouvrés après cette vérification. Cet objectif n’est pas un délai légal.
Pour une demande d’exercice des droits, le délai réglementaire de réponse est en principe d’un mois. Il peut être prolongé de deux mois lorsque la complexité ou le nombre de demandes le justifie, à condition d’en informer la personne dans le premier mois.
Lorsqu’un utilisateur est supprimé dans Supabase Auth, les contraintes de base de données suppriment en cascade son profil, son association Chess.com, sa progression, ses publications communautaires, ses réactions, son code de parrainage et ses transactions de Cacahuètes, achats et préférences cosmétiques. Une relation de parrainage est également supprimée lorsque le parrain ou le filleul disparaît. Les événements analytics métier déjà agrégés conservent leur date et leur nature mais leur identifiant utilisateur est dissocié. Les lignes Stripe ne sont pas liées au compte et ne sont donc pas supprimées par cette opération. Les données du stockage local doivent être effacées depuis le navigateur ; elles ne peuvent pas être retirées à distance avec le compte. Les bulletins de vote liés au compte sont supprimés en cascade avec celui-ci.
Droits des personnes
Selon la situation et la réglementation applicable, une personne peut demander l’accès, la rectification, l’effacement, la limitation ou la portabilité de ses données, ou s’opposer à un traitement fondé sur l’intérêt légitime. Elle peut aussi retirer un consentement lorsque le traitement concerné repose sur celui-ci.
Les demandes sont à envoyer à cahyss.khantache@gmail.com. Il est également possible d’introduire une réclamation auprès de la CNIL via www.cnil.fr.
Transferts hors de l’Espace économique européen
Le projet Supabase de TrapMate est déployé dans la région AWS spécifique eu-west-1, en Irlande. La base PostgreSQL principale et Supabase Auth utilisés par TrapMate sont donc hébergés dans l’Union européenne. Supabase précise cependant que les sauvegardes, journaux, services d’assistance et sous-traitants peuvent affecter l’analyse de localisation et de transferts. Son accord de traitement des données prévoit notamment les clauses contractuelles types de la Commission européenne pour les transferts concernés.
Vercel est établi aux États-Unis et indique que des données peuvent y être traitées ou être accessibles à ses sous-traitants. Sa politique décrit le cadre de protection des données UE-États-Unis, les clauses contractuelles types et d’autres mécanismes applicables selon la situation. La clause du DPA Vercel qui qualifie Vercel de sous-traitant des données client vise les offres Pro et Enterprise ; elle n’est donc pas présentée ici comme applicable à l’offre Hobby utilisée par TrapMate. Vercel décrit séparément son rôle de responsable du traitement pour les données générées par le service.
Stripe et Google exploitent également des infrastructures internationales. L’accord Stripe et les cadres de transfert Google décrivent selon les cas le cadre de protection des données UE-États-Unis et les clauses contractuelles types. Ces transferts sont limités aux parcours concernés : paiement Stripe, connexion Google et affichage éventuel de l’avatar Google.
Lorsqu’un utilisateur demande l’association de son compte Chess.com, son pseudo public est transmis à l’API Chess.com. La localisation précise de ce traitement n’est pas configurable dans TrapMate et relève de la politique de Chess.com liée ci-dessus.
Évolution de cette politique
Cette politique doit être mise à jour lorsque les fonctionnalités, prestataires, durées de conservation ou outils de mesure évoluent. Les autres règles du site figurent dans les conditions d’utilisation.
