⚠️ Projet — Version 1.0. Cette politique est rédigée pour la mise en service du logiciel Popote. Elle doit faire l'objet d'une revue juridique avant publication officielle auprès d'organismes opérationnels. La version courante en production sera datée et approuvée par le responsable de la protection des renseignements personnels (PRP) de Popote.
1. Identité de l'organisme
Popote est un logiciel propriétaire de gestion, diffusé en service hébergé (SaaS) par abonnement mensuel à prix communautaire, pour les organismes sans but lucratif (OBNL) qui opèrent des services de popotes roulantes au Québec.
| Responsable | Marc-Antoine Lemire (mainteneur initial) |
| Adresse | Québec, Canada |
| Courriel | privacy@malemire.ca |
| PRP (responsable de la protection des renseignements personnels) | Marc-Antoine Lemire, pour la plateforme |
| Type d'organisation | Logiciel propriétaire diffusé en service hébergé (SaaS), sans personnalité juridique distincte au moment de la version 1.0 |
Note importante : pour chaque organisme client (popote roulante) qui utilise le logiciel, c'est l'OBNL elle-même qui est responsable des renseignements personnels (RP) de ses bénéficiaires et bénévoles au sens de Loi 25 (art. 1). Popote agit comme fournisseur technique (sous-traitant) au sens de l'art. 18.3. Voir §10 ci-dessous.
2. Périmètre de cette politique
Cette politique couvre uniquement :
- Les RP collectés par le site
www.popoteapp.ca(formulaire de contact, statistiques d'utilisation, etc.) ; - Les RP collectés via la console super-administrateur
(
admin.popoteapp.ca) — comptes des super-admins de la plateforme ; - Les RP que Popote héberge pour le compte des OBNL clientes dans son rôle de fournisseur technique (cf. §10).
Elle ne couvre pas :
- Les politiques de confidentialité propres à chaque OBNL cliente vis-à-vis de ses bénéficiaires et bénévoles. Chaque OBNL doit publier sa propre politique conforme Loi 25 art. 8.2 et la communiquer à ses publics.
3. Renseignements personnels collectés
3.1 Visiteurs du site web www.popoteapp.ca
- Aucune RP n'est collectée passivement par défaut. Pas de cookie de pistage, pas d'analytics tiers (Google Analytics, etc.), pas d'iframe de réseau social.
- Si vous nous écrivez (formulaire de contact ou courriel direct), nous collectons votre nom, courriel et le contenu de votre message.
3.2 Super-administrateurs de la plateforme
- Courriel professionnel (identifiant de connexion)
- Mot de passe (haché Argon2id, jamais stocké en clair)
- Secret TOTP (chiffré, jamais affiché sauf au moment de l'enrôlement)
- Adresse IP et user-agent lors de chaque connexion et action sensible (journalisation d'audit)
- Journal d'audit des actions sur la console (qui, quand, quoi)
3.3 RP des OBNL clientes (rôle sous-traitant)
Pour chaque organisme abonné, Popote héberge — au nom de l'OBNL — les RP que l'OBNL choisit de saisir dans son espace cloisonné :
- Bénéficiaires : nom, adresse, contact d'urgence, allergies, régime alimentaire, langue, notes d'accès au domicile, tarification adaptée. (Voir §3.4 sur les renseignements sensibles.)
- Bénévoles : nom, adresse, disponibilités, secteurs, permis, véhicule, courriel.
- Commandes, routes, factures : générées par les opérations quotidiennes.
- Consentement : signature numérique au moment de l'inscription, preuve cryptographique conservée par tenant.
3.4 Renseignements sensibles (Loi 25 art. 12-13)
Les renseignements sensibles suivants peuvent être saisis dans les espaces des OBNL clientes :
- Données de santé : allergies, régimes médicaux, conditions pertinentes pour la livraison (mobilité réduite, etc.)
- Données financières : tarification adaptée, contributions
Ces renseignements sont chiffrés au repos (PostgreSQL pgcrypto)
et leur accès est restreint par RBAC (admin, coordo, livreur ne
voient que ce qui leur est nécessaire — Loi 25 principe de
minimisation, art. 11). Marqués sensitive=true dans le schéma —
un journal d'audit séparé enregistre chaque consultation.
4. Finalités de la collecte (Loi 25 art. 8.1)
Les RP que Popote (la plateforme) collecte servent à :
- Authentifier les super-administrateurs et faire fonctionner la console plateforme.
- Auditer les actions sensibles (impersonation, modification de tenant, suppression) pour la traçabilité Loi 25 §11.5 et la sécurité.
- Répondre aux demandes envoyées via le formulaire de contact.
Les RP que les OBNL clientes saisissent servent à :
- Opérer leurs popotes roulantes : planifier les routes, coordonner les bénévoles, gérer les bénéficiaires, facturer.
- Rendre des comptes aux bailleurs (PSOC, Centraide, ministères) — agrégés et anonymisés au besoin.
Aucune RP n'est utilisée à des fins de marketing, de revente, de profilage publicitaire ou de décision automatisée sans intervention humaine (Loi 25 art. 12.1 — pas de décisions exclusivement automatisées dans la V1.0).
5. Bases légales et consentement (Loi 25 art. 14)
- Les super-administrateurs consentent explicitement lors de la création de leur compte.
- Les OBNL clientes consentent via une entente écrite distincte (cf. §10 — entente sous-traitant).
- Les bénéficiaires des OBNL consentent au moment de l'inscription par chaque OBNL ; Popote conserve la preuve cryptographique du consentement (HMAC-SHA256 par tenant) mais n'est pas le responsable.
6. Conservation et destruction (Loi 25 art. 11, 23)
| Type de donnée | Conservation | Fondement |
|---|---|---|
| Journaux d'audit plateforme | 7 ans | Obligation d'audit Loi 25 art. 11, recommandation §10.4 du document de conception |
| Comptes super-admin désactivés | Conservés inactifs (cycle de vie sans destruction) | Préserve l'intégrité de l'historique d'audit + FK vers impersonation_log |
| BD tenant archivé | 2 ans en lecture seule, puis suppression définitive (tenant:delete) |
§10.4 doc de conception ; déclenche DROP DATABASE + DROP ROLE |
| Formulaire de contact | 12 mois après réponse | Pas de finalité résiduelle |
| Backups chiffrés | 90 jours rolling | Sécurité opérationnelle ; chiffrement AES-256-GCM |
| Bénéficiaires individuels (côté OBNL) | Selon la politique de l'OBNL — Popote fournit la CLI client:forget pour le droit à l'oubli (Loi 25 art. 23) |
Sous la responsabilité de l'OBNL |
7. Sécurité (Loi 25 art. 10)
- Authentification : Argon2id (NIST SP 800-63B Memory-Hard) + 2FA TOTP obligatoire pour tous les super-administrateurs (ENF-SEC-02). Lockout après 5 échecs / 15 min.
- Sessions : cookies HttpOnly + Secure + SameSite=Lax, identifiants 256 bits, store Redis cloisonné par MODE (admin / tenant / API).
- Isolation multi-tenant : chaque OBNL cliente a une base de données PostgreSQL distincte + rôle SQL distinct (pattern Silo). Pas d'accès cross-tenant possible techniquement.
- Chiffrement au repos : Volumes de l'hébergeur chiffrés
(LUKS dm-crypt). En complément, chiffrement applicatif
zero-knowledge côté hébergeur sur les RP particulièrement sensibles :
- Secrets TOTP et sessions : Secretbox libsodium
(XSalsa20-Poly1305) avec la clé globale
ENCRYPTION_KEY. - Uploads objet (PDF reçus fiscaux, rapports PSOC, exports CSV,
signatures PWA, etc.) : XChaCha20-Poly1305-IETF (AEAD avec
Additional Authenticated Data) avec une clé propre à chaque OBNL
cliente (per-tenant DEK). Chaque OBNL a une clé de chiffrement
distincte, stockée chiffrée elle-même par
ENCRYPTION_KEYdans la BD master. Conséquence : (a) compromission d'une clé OBNL n'affecte pas les autres OBNL, (b) droit à l'oubli cryptographique Loi 25 art. 23 — la suppression de la clé de l'OBNL rend tous ses uploads mathématiquement indéchiffrables, même si l'hébergeur conservait les fichiers. La clé maîtresseENCRYPTION_KEYest gérée hors-volume Postgres via le coffre Fly Secrets et n'apparaît jamais en clair sur disque.
- Secrets TOTP et sessions : Secretbox libsodium
(XSalsa20-Poly1305) avec la clé globale
- Chiffrement en transit : TLS 1.3 minimum sur tous les sous-domaines (HSTS avec includeSubdomains).
- Sauvegardes : chiffrées AES-256-GCM, conservées 90 jours, testées trimestriellement.
- Audit complet : chaque action sensible journalisée
(
audit_logtenant +platform_auditmaster), incluantimpersonated_byquand un super-admin agit pour le compte d'un user (transparence Loi 25 §11.5). - Détection d'anomalies : règles V1 (>100 lectures clients en 10 min, exports nocturnes ou en weekend) — alerte le PRP par courriel.
8. Hébergement et transferts (Loi 25 art. 17)
8.1 Localisation physique des serveurs
L'infrastructure de production de Popote est hébergée au datacenter
de Beauharnois (Québec, Canada) — région yul de notre hébergeur
Fly.io Inc. Les serveurs sont physiquement situés au Québec et les
sauvegardes Postgres restent dans la même région.
8.2 Sous-traitance hors-Québec déclarée
L'entité opératrice Fly.io Inc. est incorporée au Delaware (États-Unis). À ce titre, bien que les serveurs et les disques de stockage soient physiquement au Québec, Fly.io Inc. demeure une société américaine et peut, en théorie, être soumise à des demandes des autorités américaines (notamment le CLOUD Act — 50 USC §1881a).
Conformément à Loi 25 art. 17, Popote a procédé à une évaluation des facteurs relatifs à la vie privée (EFVP) pour ce transfert. Les mesures techniques et contractuelles retenues sont les suivantes :
- Chiffrement applicatif Secretbox (libsodium XSalsa20+Poly1305)
des renseignements particulièrement sensibles (secrets TOTP,
sessions, contenu des uploads S3) avec une clé
ENCRYPTION_KEYgérée logiquement séparée du volume de stockage Postgres. Fly.io Inc. ne pourrait donc pas lire ces champs même si elle était contrainte de divulguer un volume. - Argon2id sur les mots de passe — irréversibles.
- Hash SHA-256 sur les jetons de session PWA — irréversibles.
- DPA (Data Processing Agreement) signé avec Fly.io Inc., conforme aux 5 clauses art. 18.3, incluant l'obligation de notification d'incident sans délai indu et le retour ou la destruction certifiée des données à la fin de la relation.
- Image Docker portable (GHCR) et migration de retour vers un hébergeur strictement québécois (ex. OVHcloud Canada Inc.) documentée comme plan B activable en cas d'évolution du risque ou de demande d'une OBNL cliente.
L'EFVP complète est conservée par l'éditeur de Popote à
plans/efvp_fly.md et peut être communiquée sur demande à une OBNL
cliente ou à la CAI.
8.3 Sous-traitants ultérieurs hors-Québec déclarés
| Sous-traitant | Pays | Service | Type de RP exposées |
|---|---|---|---|
| Fly.io Inc. | États-Unis (Delaware) | Hébergement YUL Beauharnois | Toutes RP, mitigation par chiffrement applicatif Secretbox + Argon2id pour les champs les plus sensibles |
| Backblaze Inc. (Backblaze B2) | États-Unis (Californie) | Stockage objet S3 pour exports et sauvegardes offsite | Uniquement du contenu chiffré client-side avant upload (Secretbox + GPG pour backups) — Backblaze ne voit que du chiffre opaque |
| Postmark / Mailgun (à déterminer) | États-Unis | Envoi de courriels transactionnels (notifications, reset password) | Adresses courriel + contenu des messages — transit uniquement, pas de stockage durable |
Le registre complet et à jour est publié à /politique/sous-traitants/.
8.4 Sous-traitants explicitement exclus
Popote n'utilise pas et n'utilisera pas :
- AWS, Microsoft Azure, Google Cloud Platform — leurs régions canadiennes sont opérées par des entités américaines de plus grande taille avec des engagements de localisation moins clairs que ceux obtenus avec Fly.io Inc., et un coût significativement supérieur.
- Cloudflare proxy (orange cloud) côté origin — pas d'interception
du trafic applicatif chez un tiers américain. Cloudflare est utilisé
uniquement comme résolveur DNS (
A/AAAA/CNAMErecords) pour le domainepopoteapp.ca. - Google Analytics, Plausible.io, Matomo Cloud — pas de pistage de comportement utilisateur.
- Sentry SaaS, Bugsnag, DataDog — pas d'envoi des stack traces contenant potentiellement des RP à des fournisseurs SaaS US.
9. Vos droits (Loi 25 art. 27, 28, 35)
Vous avez le droit de :
- Accéder à vos RP que nous détenons. Demande à
privacy@malemire.ca, réponse dans les 30 jours (Loi 25 art. 32). - Rectifier des RP inexactes, incomplètes ou équivoques.
- Retirer votre consentement à tout moment (art. 14).
- Demander la suppression ou l'anonymisation de vos RP, sous réserve des obligations légales de conservation (cf. §6).
- Porter plainte à la Commission d'accès à l'information du Québec (CAI) si vous estimez que vos droits ne sont pas respectés : https://www.cai.gouv.qc.ca.
Pour exercer ces droits, écrivez à privacy@malemire.ca. Nous
accuserons réception sous 48 h et fournirons une réponse
substantielle sous 30 j.
10. Sous-traitants et entente OBNL (Loi 25 art. 18.3)
Quand une OBNL utilise Popote, elle reste le responsable des RP de ses bénéficiaires et bénévoles. Popote agit comme sous-traitant technique au sens de l'art. 18.3.
Une entente écrite Popote ↔ OBNL formalise :
- La nature, finalité, durée du traitement
- Le caractère confidentiel et l'obligation de sécurité
- L'obligation de notification d'incident dans les meilleurs délais
- Le sort des données à la fin de la relation (export + destruction)
- L'interdiction d'utiliser les RP à d'autres fins
Sous-traitants techniques de Popote (registre complet et à jour :
/politique/sous-traitants/) :
| Fournisseur | Service | Localisation physique | Localisation juridique | Type de RP traitées |
|---|---|---|---|---|
| Fly.io Inc. | Hébergement serveurs + stockage | Beauharnois, QC | États-Unis (Delaware) | Toutes RP — chiffrement at-rest LUKS + chiffrement applicatif Secretbox pour champs sensibles (voir §8.2) |
| Backblaze Inc. | Stockage objet S3 (B2) pour exports et backups | États-Unis (Californie) | États-Unis | Contenu chiffré client-side uniquement (Secretbox + GPG) — Backblaze ne voit aucune RP en clair |
| Postmark / Mailgun (prod) | Envoi de courriels transactionnels | États-Unis | États-Unis | Adresses courriel + contenu des messages — transit, pas de stockage durable |
| MailHog (dev seulement) | Catch-all dev local | Conteneur local Docker | Sans objet | Sans objet |
| chillerlan/php-qrcode | Génération QR codes TOTP | Aucun (librairie locale embarquée) | Sans objet | Aucun |
Voir §8.2 pour le détail des mesures de protection appliquées au transfert vers Fly.io Inc. (US) et la référence à l'EFVP correspondante.
11. Décisions automatisées (Loi 25 art. 12.1)
Popote n'utilise aucune décision exclusivement automatisée ayant des effets juridiques ou significatifs sur une personne dans la version 1.0. Les optimisations de routes (OSRM/VROOM) sont des aides à la décision consultatives — un humain (coordo) valide toujours la route finale.
Si une fonctionnalité de décision automatisée est ajoutée dans une version future, cette politique sera mise à jour et un avis sera publié.
12. Modifications de cette politique
Cette politique peut être modifiée. Nous publierons un avis de modification au moins 30 jours avant que les changements prennent effet, sauf si la modification corrige une faille de sécurité ou est imposée par la loi.
- Les versions précédentes restent accessibles publiquement à
/politique/v1/,/politique/v2/, etc. - Chaque version est horodatée, versionnée et possède un
sha256du contenu pour preuve d'intégrité (voir front matter Markdown). - Les utilisateurs actifs sont notifiés par courriel et/ou par une bannière dans leur console.
13. Contact
| Pour exercer vos droits | privacy@malemire.ca |
| PRP (responsable Loi 25 art. 7) | Marc-Antoine Lemire, privacy@malemire.ca |
| Plainte CAI | https://www.cai.gouv.qc.ca/citoyens/comment-formuler-plainte |
| Éditeur du logiciel | Marc-Antoine Lemire — privacy@malemire.ca |
Version 1.0 · Effective : 2026-05-21 · Statut : draft —
publication officielle après revue juridique. Ce document est
identifié de manière immuable par le sha256 indiqué dans le
front matter de ce fichier Markdown.