← Stacks

Politique de confidentialité

En vigueur le 24 août 2026

Synthèse

Stacks est un carnet personnel de musculation et de nutrition. Les données enregistrées dans l'application y sont stockées afin que celle-ci puisse les réafficher. Elles ne sont jamais vendues, jamais exploitées à des fins publicitaires et jamais transmises à des tiers à des fins marketing. Stacks collecte également des statistiques d'usage anonymes, hébergées dans l'Union européenne, afin de mesurer quelles fonctionnalités sont utilisées ; elles ne contiennent aucune donnée personnelle ni de santé et peuvent être désactivées dans l'application. Une fonctionnalité fait appel à un prestataire d'IA externe : la lecture d'un ticket de restaurant transmet la photo correspondante à l'API Gemini de Google, et uniquement après acceptation de l'écran qui le décrit. Un abonnement optionnel est facturé par Apple via l'App Store ; les données de paiement ne parviennent jamais à Stacks.

Responsable du traitement

Stacks est édité par Aurélien Durier, particulier établi en France, agissant en qualité de responsable du traitement. Toute demande relative aux données personnelles peut être adressée à l'adresse figurant en bas de cette page.

Données collectées

La création d'un compte et l'utilisation de Stacks impliquent le stockage des données suivantes :

  • -Compte : adresse e-mail, mot de passe haché, date de création du compte.
  • -Profil : sexe, année de naissance, taille, poids, niveau d'activité, objectif (sèche, maintien, prise de masse).
  • -Nutrition : repas enregistrés, aliments, recettes, objectifs du jour.
  • -Entraînements : exercices, séries, répétitions, charges, modèles de séance, sessions.
  • -Composition corporelle : pesées enregistrées au fil du temps.
  • -Technique : jetons de session, qui maintiennent la connexion au compte, et journaux d'accès serveur standards (adresse IP, horodatage, route demandée) conservés par l'hébergeur à des fins de sécurité et de prévention des abus.
  • -Analytics d'usage anonymes, dans l'application : quelles fonctionnalités et quels écrans sont utilisés, enregistrés sous forme de compteurs et d'indicateurs (par exemple « une série a été enregistrée », « le bilan hebdomadaire a été ouvert ») reliés à un identifiant aléatoire par installation, jamais les repas, aliments, exercices ni valeurs de poids.
  • -Mesure d'audience, sur ce site web : les pages consultées et la durée de la visite, l'adresse de chaque page, sans sa chaîne de requête, la page d'origine, les paramètres de campagne et les identifiants de clic publicitaire portés par un lien entrant (utm_*, gclid, fbclid et similaires), ainsi que le navigateur, le système d'exploitation, le type d'appareil et la taille de l'écran. Aucun cookie ni entrée de stockage local n'est conservé, et les valeurs saisies dans un formulaire ne sont jamais enregistrées. L'adresse IP parvient au prestataire de mesure, qui s'en sert pour calculer un identifiant régénéré chaque jour, de sorte qu'un visiteur qui revient est compté comme un nouveau visiteur. Deux événements nommés indiquent que le badge App Store a été cliqué et que le formulaire de liste d'attente a été validé, chacun n'ajoutant aucune information propre au-delà de la langue de la page.
  • -Fonctionnalités IA : la date d'acceptation de l'écran relatif au scan de ticket, et une entrée horodatée par scan effectué, servant à appliquer un plafond d'usage. La photo, elle, n'est pas conservée.
  • -Abonnement : l'état de l'abonnement en cours (produit, période, échéance, état du renouvellement) et les événements d'abonnement associés. Les données de paiement (numéros de carte, adresse de facturation) ne parviennent jamais à Stacks : le paiement est traité par Apple.

Ne sont pascollectés : les contacts, la localisation, la photothèque, le micro, ni aucune donnée de santé provenant d'Apple Santé ou de Google Fit. L'appareil photo est sollicité dans deux cas, toujours à l'initiative de l'utilisateur : le scan d'un code-barres, où l'image reste sur l'appareil et n'est jamais transmise, et le scan d'un ticket, où la photo est transmise pour lecture dans les conditions décrites à la section « Scan de ticket » ci-dessous, sans être conservée.

Finalités et bases légales

Pour les données de compte, de profil, de nutrition, d'entraînement et de composition corporelle, la base légale est l'exécution d'un contrat(article 6.1.b) : ces données sont nécessaires au fonctionnement du service souscrit. Les données de profil (sexe, âge, poids, taille, niveau d'activité) servent uniquement au calcul des objectifs quotidiens d'énergie et de macronutriments, à l'exclusion de toute autre finalité. La même base couvre l'état de l'abonnement décrit à la section « Abonnement » ci-dessous, nécessaire pour ouvrir les fonctionnalités payées.

Pour les analytics d'usage anonymes décrits ci-dessus, la base légale est l'intérêt légitime(article 6.1.f) à mesurer l'usage de l'application afin de l'améliorer. Ces données étant anonymes et limitées à la mesure d'audience interne, elles ne prévalent pas sur les droits des personnes concernées, et, dans l'application, ces analytics peuvent être désactivés à tout moment dans Réglages → Compte et données.

La mesure d'audience du site repose sur le même intérêt légitime(article 6.1.f) : savoir combien de personnes atteignent usestacks.app, d'où elles arrivent, et si elles poursuivent vers l'App Store. Elle est limitée à ce que cette finalité exige : rien n'est stocké sur l'appareil du visiteur, l'identifiant est régénéré chaque jour, aucun profil n'est constitué, et ces données ne servent jamais à la publicité ni ne sont transmises à des annonceurs. Un navigateur qui émet le signal Do Not Track n'est pas mesuré, et toute opposition peut également être adressée à l'adresse de contact figurant en bas de cette page.

Cookies et technologies similaires

Ce site dépose deux cookies. Tous deux sont internes : ils sont déposés par usestacks.app lui-même et ne sont lisibles par personne d'autre. Aucun ne sert à la publicité, à la mesure d'audience ni au suivi d'un site à l'autre, et aucun tiers ne dépose de cookie ici.

  • -NEXT_LOCALE, sur les pages publiques : conserve la langue d'affichage, afin que les pages suivantes soient servies dans la langue choisie. Il ne contient qu'un code de langue, et dure le temps de la session de navigation.
  • -Le cookie de session, déposé après connexion : maintient la connexion au compte d'une page à l'autre, afin que les identifiants ne soient pas redemandés à chaque requête. Il contient un jeton de session. La session dure 30 jours et se prolonge à chaque utilisation ; la déconnexion y met fin.

En application de l'article 5(3) de la directive ePrivacy, transposé en France par l'article 82 de la loi Informatique et Libertés, le consentement est requis avant tout dépôt d'information sur l'appareil d'un visiteur, sauf lorsque ce dépôt est strictement nécessaire à la fourniture d'un service de communication en ligne expressément demandé par l'utilisateur. Les deux cookies ci-dessus relèvent de cette exception : maintenir la connexion au compte est nécessaire à l'espace de compte lui-même, et la CNIL range parmi les cookies exemptés ceux de personnalisation de l'interface, tels qu'un choix de langue ou de présentation, lorsque cette personnalisation constitue un élément intrinsèque et attendu du service. C'est l'objet du cookie de langue, qui ne contient qu'une préférence, à l'exclusion de tout identifiant.

Cette exemption porte sur le dépôt du cookie ; le RGPD s'applique par ailleurs aux données personnelles en cause. Pour le cookie de session, la base légale est l'exécution d'un contrat(article 6.1.b) : c'est lui qui rend le compte utilisable. Le cookie de langue ne contient ni identifiant ni donnée personnelle, seulement un code de langue ; dans la mesure où le RGPD lui serait applicable, la base légale est l'intérêt légitime (article 6.1.f) à présenter le site dans la langue de la dernière consultation.

Aucun bandeau de consentement n'est affiché, car rien ici ne requiert de consentement : les deux cookies ci-dessus en sont exemptés, la mesure d'audience du site décrite ci-dessus fonctionne sans cookie et n'écrit rien dans le stockage local ou de session du navigateur, et aucune technologie de publicité ou de suivi inter-sites n'est chargée. Ces cookies restent supprimables ou blocables depuis les réglages du navigateur ; les bloquer déconnecte le compte et ramène la langue d'affichage à sa valeur par défaut.

Liste d'attente

Une adresse e-mail renseignée sur le site afin d'être informé (par exemple de la version Android ou des nouveautés) est conservée avec la langue de la page et la date d'inscription, à la seule fin d'envoyer des informations relatives à Stacks. La base légale est le consentement (article 6.1.a), donné lors de la validation du formulaire. La liste d'attente est indépendante du compte applicatif : aucun compte n'est requis pour s'y inscrire, et l'inscription n'en crée aucun. L'adresse est conservée jusqu'à demande de retrait, ou jusqu'à la fin de l'objectif de la liste (par exemple la mise à disposition de l'application Android), après quoi elle est supprimée. Ces envois passent par Resend (région UE) et chaque message comporte un lien de désinscription en un clic. La suppression peut être demandée à tout moment à l'adresse figurant en bas de cette page.

Notifications push

L'activation des rappels et l'autorisation des notifications entraînent l'enregistrement par l'appareil d'un jeton de notification (push token), conservé avec le compte à la seule fin de délivrer les rappels activés (repas, bilan hebdomadaire, pesée) aux horaires choisis. La base légale est le consentement (article 6.1.a), donné lors de l'autorisation des notifications et de l'activation d'un rappel ; il peut être retiré à tout moment en désactivant les rappels dans Réglages → Notifications ou en révoquant l'autorisation de notification. Le texte des rappels est générique et ne contient aucune donnée personnelle ni de santé. La distribution passe par le service push d'Expo, qui la relaie au service de notifications d'Apple ; Expo ne conserve pas le texte du rappel. Le jeton est conservé uniquement pour délivrer ces rappels, et supprimé à la déconnexion comme à la suppression du compte.

Scan de ticket

Le scan de ticket est facultatif et soumis à un consentement préalable, recueilli sur un écran dédié affiché avant la première photo. Aucune transmission n'a lieu tant que ce consentement n'est pas donné.

Lors d'un scan, la photo est transmise au serveur de Stacks, puis à l'API Gemini de Google, qui identifie les lignes d'articles et estime les calories et les macronutriments. La photo n'est pas conservée : elle est traitée en mémoire pendant la durée de cette seule requête, puis effacée. Aucune adresse e-mail, aucun identifiant de compte, aucune donnée de profil ni aucun repas précédemment enregistré ne l'accompagne.

Les noms des articles détectés et le nom de l'enseigne sont ensuite transmis au même prestataire, qui peut effectuer une recherche Google, afin d'affiner les valeurs nutritionnelles. Le résultat est conservé dans une table de correspondance partagée sur le serveur de Stacks, indexée uniquement par enseigne et nom d'article, sans lien avec un compte.

L'API est utilisée dans son offre payante, au titre de laquelle Google n'exploite ni les requêtes, ni les images, ni les réponses pour améliorer ses produits, et agit en qualité de sous-traitant conformément à son Data Processing Addendum. Elles sont journalisées pendant une durée limitée afin de détecter les abus de son propre service. Le traitement peut avoir lieu hors de l'Union européenne ; Google LLC est certifié au titre du EU-US Data Privacy Framework, qui couvre ce transfert.

La base légale est le consentement explicite (article 6.1.a, et article 9.2.a s'agissant d'informations susceptibles de révéler des habitudes alimentaires). La date d'acceptation et une entrée horodatée par scan sont enregistrées afin d'appliquer un plafond d'usage. Cesser d'utiliser la fonctionnalité met fin à toute transmission ultérieure ; l'effacement de la trace du consentement et de l'historique des scans peut être demandé à l'adresse figurant en bas de cette page, et l'un comme l'autre sont supprimés avec le compte.

Abonnement

L'abonnement Stacks Pro est optionnel. Le paiement est intégralement traité par Apple via l'App Store : les numéros de carte et coordonnées de facturation ne parviennent jamais à Stacks. Pour le paiement lui-même, Apple agit en qualité de responsable de traitement indépendant, selon sa propre politique de confidentialité.

Afin de savoir quel compte dispose d'un abonnement actif, Stacks attribue au compte un jeton d'achat aléatoire, attaché à l'achat App Store, et reçoit les événements d'abonnement (achat, renouvellement, échéance, remboursement) directement du serveur App Store d'Apple. Aucun autre acteur qu'Apple n'intervient, et ces événements ne portent que ce jeton et les informations du produit, jamais de nom ni d'adresse e-mail. La base légale est l'exécution d'un contrat (article 6.1.b). Ces enregistrements sont supprimés avec le compte ; Apple conserve ses propres justificatifs de facturation selon ses propres conditions.

Destinataires et sous-traitants

Stacks fait appel à un nombre limité de tiers, strictement aux fins du fonctionnement du service. La plupart agissent en qualité de sous-traitants, sur instruction de Stacks. Les fournisseurs d'identité ci-dessous font exception : ils agissent en qualité de responsables de traitement indépendants pour l'authentification qu'ils réalisent.

  • -Hébergement : Hostinger (VPS, Union européenne). L'application Next.js et la base de données Postgres y sont exécutées.
  • -Sauvegardes de base de données : Cloudflare R2. Une sauvegarde Postgres quotidienne, chiffrée au repos, conservée 30 jours. Transfert international couvert par les clauses contractuelles types de Cloudflare.
  • -E-mails transactionnels : Resend, région UE (Irlande). Sert à l'envoi des e-mails de compte et transactionnels. Traitement dans l'Union européenne, couvert par le DPA conforme au RGPD de Resend.
  • -Rapports de plantage et d'erreur (application iOS et serveur, jamais le site web) : Sentry (région UE, hébergement à Francfort, Allemagne). Depuis l'application, reçoit les traces d'erreur, le modèle d'appareil, l'OS et la version de l'application. Depuis le serveur, reçoit les traces d'erreur et la route en échec. Les deux SDK sont configurés pour retirer les adresses IP, les corps de requête et les identifiants utilisateur avant envoi, de sorte que les repas, séances, poids et photos de tickets n'y figurent jamais. Aucun rapporteur ne s'exécute dans le navigateur : consulter ce site n'envoie rien à Sentry.
  • -Analytics produit, application iOS uniquement : PostHog (région Union européenne, eu.i.posthog.com). Reçoit des événements d'usage anonymes : usage des fonctionnalités et des écrans sous forme de compteurs et d'indicateurs, ainsi que le modèle d'appareil, l'OS et la version de l'application. Sa fonction identify n'est jamais appelée, de sorte que les événements ne sont pas rattachés à un compte, et les repas, aliments, exercices et valeurs de poids ne sont jamais transmis. Traitement dans l'UE, couvert par le DPA conforme au RGPD de PostHog. Désactivable dans l'application, sous Réglages → Compte et données.
  • -Mesure d'audience, site web uniquement : PostHog (région Union européenne, eu.i.posthog.com), chargé sur les pages publiques d'usestacks.app, jamais sur les pages de connexion, de compte ni d'administration. Le mode sans cookie est activé : aucun cookie ni entrée de stockage n'est conservé dans le navigateur, et l'identifiant du visiteur est un condensé calculé côté PostHog à partir de l'adresse IP et du navigateur, avec un sel renouvelé chaque jour. Reçoit les adresses des pages, sans leur chaîne de requête, la page d'origine, les paramètres de campagne, les caractéristiques du navigateur et de l'appareil, ainsi que l'adresse IP. Sa fonction identify n'est jamais appelée, aucun profil n'est créé et l'enregistrement de session est désactivé. Traitement dans l'UE, couvert par le DPA conforme au RGPD de PostHog. Activer Do Not Track dans le navigateur y met fin. Les événements sont conservés 12 mois.
  • -Recherche d'aliments : Open Food Facts (association française à but non lucratif, hébergée dans l'UE). Interrogée lors du scan d'un code-barres ou de la recherche d'un aliment. La requête et l'adresse IP lui sont visibles ; aucune information de compte n'est transmise.
  • -Notifications push : Expo (service Expo Push, opéré par 650 Industries, Inc., États-Unis) relaie les rappels au service de notifications d'Apple. Il reçoit le jeton de notification de l'appareil et le texte générique du rappel, qu'il ne conserve pas, et aucune donnée personnelle ni de santé. 650 Industries est auto-certifié au titre du EU-US Data Privacy Framework, qui couvre le transfert vers les États-Unis.
  • -Connexion avec Apple : Apple (Apple Distribution International Ltd., Irlande, pour l'Union européenne). Sollicitée uniquement lorsque cette méthode de connexion est choisie. Apple confirme l'identité et transmet un identifiant de compte, ainsi que, à la première connexion seulement, l'adresse e-mail (ou une adresse relais privée Apple, si le masquage a été choisi) et le nom. Apple agit en qualité de responsable de traitement indépendant pour l'authentification elle-même.
  • -Connexion avec Google : Google (Google Ireland Ltd. pour l'Union européenne, Google LLC, États-Unis). Sollicitée uniquement lorsque cette méthode de connexion est choisie. Google confirme l'identité et transmet un identifiant de compte, l'adresse e-mail, le nom, ainsi qu'une URL de photo de profil qui n'est pas conservée. Google agit en qualité de responsable de traitement indépendant pour l'authentification elle-même. Google LLC est certifié au titre du EU-US Data Privacy Framework, qui couvre le transfert hors de l'Union européenne.
  • -Lecture de ticket par IA : Google (API Gemini, Google LLC, États-Unis). Sollicitée uniquement lors d'un scan de ticket. Reçoit la photo du ticket, puis les noms des articles détectés et le nom de l'enseigne, et renvoie l'estimation nutritionnelle. Aucun identifiant de compte ne l'accompagne. L'offre payante est utilisée, au titre de laquelle Google n'exploite pas ce contenu pour améliorer ses produits et agit en qualité de sous-traitant conformément à son Data Processing Addendum, en le journalisant brièvement afin de détecter les abus de son service. Google LLC est certifié au titre du EU-US Data Privacy Framework, qui couvre le transfert hors de l'Union européenne.

Aucune donnée n'est vendue, ni transmise à des annonceurs ou à des courtiers en données. Rien de ce qui est enregistré dans l'application ne sert à entraîner des modèles d'IA : le scan de ticket décrit ci-dessus passe par une offre d'API payante, au titre de laquelle le prestataire n'exploite pas le contenu reçu pour améliorer ses propres produits. Les analytics produit ci-dessus sont anonymes et exploités en interne uniquement, aux fins d'amélioration de Stacks.

Durée de conservation

Les données sont conservées tant que le compte existe. La suppression du compte depuis Réglages → Compte et données → Supprimer le compte efface définitivement l'ensemble des données associées sous 30 jours, hormis les enregistrements minimaux dont la loi impose la conservation (par exemple la preuve du consentement), effacés à l'issue de leur durée légale de conservation.

Droits des personnes concernées

Au titre du RGPD, tout utilisateur dispose du droit de :

  • -Accéder à ses données (Réglages → Compte et données → Télécharger mes données exporte une copie JSON).
  • -Rectifier les données inexactes, directement modifiables dans l'application.
  • -Effacer son compte et l'ensemble des données associées (Réglages → Compte et données → Supprimer le compte).
  • -S'opposer au traitement ou le limiter, y compris en désactivant les analytics d'usage anonymes (Réglages → Compte et données).
  • -Introduire une réclamation auprès de la CNIL (cnil.fr) si ces droits ne sont pas respectés.

Ces droits s'exercent directement dans l'application, ou par courrier électronique à l'adresse figurant en bas de cette page. Les demandes reçoivent une réponse sous 30 jours.

Sécurité

Les mots de passe sont hachés et ne sont jamais stockés en clair. Le trafic entre l'application et le serveur est chiffré (HTTPS). Les sauvegardes de base de données sont chiffrées au repos. L'accès aux données de production est restreint à l'exploitant et journalisé.

Mineurs

Stacks n'est pas destiné aux personnes de moins de 16 ans. Si un compte a été créé par un mineur, un message adressé à l'adresse figurant en bas de cette page en entraînera la suppression.

Modifications

Toute modification de la présente politique est reflétée par la date d'entrée en vigueur indiquée en haut de cette page. Les changements substantiels font l'objet d'une information dans l'application avant leur prise d'effet.

Pour toute question relative à la présente politique, écrire à adurier.pro@gmail.com.