Confidentialité

La présente politique de confidentialité décrit comment FinitoApp collecte, utilise et protège vos données personnelles conformément à la nouvelle Loi fédérale sur la protection des données (nLPD) entrée en vigueur le 1er septembre 2023.

Dernière mise à jour : 6 mai 2026 · version 1.4 (durcissement uploads : re-encodage Sharp anti-polyglot, multer 2.x, validation Zod stricte des entrées, ClamAV fail-close optionnel, CSP nonce-based pour style-src)

1. Responsable du traitement

FinitoApp

Suisse

Protection des données : privacy@finitoapp.ch

Support général : support@finitoapp.ch

2. Données collectées

Nous collectons les catégories de données personnelles suivantes :

  • Nom et prénom
  • Adresse e-mail
  • Numéro de téléphone (facultatif)
  • Photos de chantier, plans PDF, signatures électroniques
  • Adresses de chantier et données de projets (réserves, lots, commentaires)
  • Contacts maîtres d’ouvrage (avec consentement explicite tracé)
  • Données de facturation (traitées par Stripe sur le web ou RevenueCat sur mobile)
  • Données d’utilisation, journaux d’activité et journaux d’audit administratif
  • Secret MFA TOTP optionnel (chiffré AES-256-GCM en base de données)

3. Finalités du traitement

Vos données sont traitées pour les finalités suivantes :

  • Gestion de projets de construction (création, suivi, collaboration)
  • Communication entre les membres d’un projet
  • Facturation et gestion des abonnements
  • Notifications et rappels automatiques
  • Amélioration du service via l’analyse interne anonymisée des journaux serveur (sans collecte d’événements supplémentaires — cf. § 9 et § 10.7ter des CGU)

4. Base juridique

Le traitement de vos données repose sur l’exécution du contrat conformément à l’art. 31 al. 2 let. a de la nouvelle Loi fédérale sur la protection des données (nLPD). Les données collectées sont nécessaires à la fourniture du service FinitoApp tel que décrit dans nos conditions générales.

Aucun consentement à un quelconque outil d’analyse comportementale n’est recueilli : l’Application n’en utilise aucun et n’en utilisera jamais (engagement définitif — cf. § 10.7ter des CGU).

5. Sous-traitants et transferts de données

Nous faisons appel aux sous-traitants suivants pour le fonctionnement du service :

Infomaniak Network SA(Suisse (Genève))
Hébergement VPS + Object Storage S3 + DNS + TLS + backupsDonnées stockées exclusivement en Suisse — ISO 27001
Stripe Payments Europe Ltd.(Irlande (UE))
Traitement des paiements et facturation (web)Décision d’adéquation CH-UE — PCI-DSS Level 1
Sendinblue SAS (Brevo)(France (UE))
Envoi d’e-mails transactionnels et marketing (avec consentement)Décision d’adéquation CH-UE
RevenueCat Inc.(États-Unis)
Gestion des abonnements in-app iOS/AndroidClauses contractuelles types (SCC) — cascade DELETE à la suppression de compte
Sentry (Functional Software Inc.)(UE (région EU activée))
Détection d’erreurs applicativesStack traces scrubbées des tokens / passwords — décision d’adéquation CH-UE
Apple Inc. (App Store)(États-Unis)
Distribution mobile iOS + IAPSCC via contrat développeur Apple
Google LLC (Play Store)(États-Unis)
Distribution mobile Android + IAPSCC via contrat développeur Google
Let’s Encrypt (ISRG)(États-Unis)
Émission de certificats TLSHors scope données personnelles — nom de domaine uniquement

Pour les transferts vers les USA (RevenueCat, Apple, Google), des clauses contractuelles types (SCC) ou des garanties équivalentes sont mises en place conformément à l’art. 16 al. 2 let. d nLPD. La liste complète et à jour des sous-traitants est publiée sur la page dédiée : /sous-traitants.

Cascade de suppression : lorsque vous supprimez votre compte, une suppression en cascade est déclenchée chez RevenueCat (DELETE /v1/subscribers/:appUserId), Stripe, Brevo (listes de diffusion) et l’ensemble des fichiers stockés sur le bucket S3.

6. Durée de conservation

  • Période d’essai : les données sont conservées pendant la durée de l’essai, puis supprimées 30 jours après son expiration si aucun abonnement n’est souscrit.
  • Abonnement actif : les données sont conservées pendant toute la durée de l’abonnement.
  • Après résiliation d’un abonnement payant : vos données créées pendant votre période payante (chantiers, réserves, lots, plans PDF, photos, signatures) sont conservées 120 jours, pendant lesquels vous passez en mode lecture seule. Au terme de ces 120 jours sans nouveau abonnement, toutes ces données sont définitivement supprimées. Des rappels sont envoyés par e-mail à J-30, J-14, J-7 et J-1.
  • Suppression volontaire : vous pouvez à tout moment, indépendamment de votre formule, supprimer immédiatement et définitivement la totalité de vos données via la section « Supprimer mon compte » (bouton ci-dessous). Les données sont alors retirées instantanément de nos serveurs, des statistiques administratives et des exports administratifs.
  • Données de facturation : conservées 10 ans conformément aux obligations légales suisses (art. 958f CO).
  • Journaux métier (activity_logs) : 2 ans (CO art. 367 — garantie pour les défauts d’ouvrage).
  • Journaux d’audit administratif (audit_logs) : 3 ans anonymisés post-suppression du compte (Art. 12 nLPD — registre des actes du responsable de traitement).
  • Liens de partage temporaires : 7 jours TTL strict + révocation manuelle 1-clic possible à tout moment.
  • Tokens de réinitialisation de mot de passe : 1 heure, à usage unique.
  • Sauvegardes (Object Lock S3) : 30 jours immutables + 7 jours en local.
  • Logs techniques (PM2 / nginx) : 30 jours.

6bis. Liens de partage temporaires (DPIA T-07)

Le Service permet de générer un lien de partage public temporairepermettant à un artisan ou intervenant non-inscrit de consulter une réserve spécifique pendant 7 jours. Ce traitement a fait l’objet d’une analyse d’impact relative à la protection des données (DPIA) conformément à l’art. 22 nLPD et à l’art. 35 RGPD — référence registre T-07.

Mesures de protection :

  • Token 32 octets aléatoires (256 bits d’entropie) ; affiché une seule fois au créateur
  • Stockage SHA-256 uniquement en base de données — le token brut n’est jamais sauvegardé
  • Expiration automatique stricte à J+7 ; révocation manuelle 1-clic possible à tout moment
  • Aucun cookie persistant, aucun fingerprint, aucun e-mail demandé au visiteur
  • En-têtes X-Robots-Tag: noindex, nofollow + Cache-Control: private, no-store — interdiction explicite d’indexation
  • Bannière de consentement nLPD/RGPD versée avant accès, hashée SHA-256 pour preuve
  • Rate-limit 30 requêtes/min/IP-prefix /24 contre les tentatives de bruteforce

Score de risque résiduel agrégé après mesures : 11 % (FAIBLE) selon la matrice CNIL PIA Guide v3.

7. Vos droits

Conformément à la nLPD, vous disposez des droits suivants :

  • Droit d’accès : obtenir une copie de vos données personnelles
  • Droit de rectification : corriger des données inexactes
  • Droit à l’effacement : demander la suppression de vos données
  • Droit à la portabilité : recevoir vos données dans un format structuré
  • Droit d’opposition : vous opposer au traitement de vos données

Pour exercer vos droits, contactez-nous à : privacy@finitoapp.ch

Nous répondons à toute demande dans un délai de 30 jours. En cas de désaccord, vous pouvez saisir le Préposé fédéral à la protection des données et à la transparence (PFPDT).

8. Sécurité

Nous mettons en oeuvre les mesures de sécurité suivantes pour protéger vos données :

  • Hachage des mots de passe avec argon2id (OWASP 2024) + vérification HIBP k-anonymity
  • Communications chiffrées via HTTPS / TLS 1.3 (HSTS preload en cours)
  • Tokens d’authentification JWT HttpOnly 15 min + refresh token hashé 7 jours
  • MFA TOTP optionnel — secret chiffré AES-256-GCM en base de données
  • Chiffrement au repos : AES-256 sur disque PostgreSQL ; backups GPG-AES-256 côté client + SSE-AES-256 côté S3 ; Object Lock 30 jours immutables
  • Réinitialisation de mot de passe : invalide simultanément toutes les sessions ouvertes sur tous les appareils (mitigation OWASP A07:2021)
  • Protection contre les attaques CSRF et XSS (Helmet.js, CSP avec nonce per-request sur script-src et style-src)
  • Limitation du nombre de requêtes (rate limiting) ; lockout brute-force ; emails hashés SHA-256/12 dans les logs
  • Accès aux données restreint par rôle (RBAC) ; audit logs d’actions admin sensibles conservés 3 ans
  • Validation stricte des entrées (Zod) : téléphone format Suisse/international, e-mail RFC 5321, longueur max sur tous les champs texte (anti-DoS mémoire, anti-injection)
  • Uploads sécurisés : validation des magic bytes (whitelist JPEG/PNG/WEBP/GIF/PDF), re-encodage systématique des images via sharp (neutralise les payloads polyglotes embarqués dans les chunks ancillaires PNG/segments APP JPEG), strip EXIF/IPTC + métadonnées PDF, scan ClamAV optionnel avec mode fail-close, limite 30 mégapixels (anti-decompression-bomb), CSP sandbox + Content-Disposition attachment sur les PDF servis
  • Pre-commit hook gitleaks + scans CodeQL hebdomadaires + osv-scanner + semgrep + Dependabot + SBOM SPDX 2.3 retention 90j
  • Dépendances tierces : maintien continu à jour des paquets vulnérables (politique « 0 CVE high »), overrides pnpm sur les transitives sensibles
  • Notification de violation Art. 24 nLPD : procédure formelle documentée, notification au PFPDT sous 72h en cas de violation à risque élevé

9. Cookies et stockage local

Engagement définitif sur la WebApp (app.finitoapp.ch) : aucun cookie tiers, aucun cookie analytique, aucun cookie marketing, aucun outil de suivi comportemental ne sont déployés. Cette absence est un choix éditorial pérenne et non une situation transitoire : ni Google Analytics, ni Mixpanel, ni PostHog, ni Matomo, ni aucun outil équivalent ne seront intégrés à la version web du Service.

Seuls des cookies strictement techniques sont utilisés pour le fonctionnement du Service : jeton d’authentification JWT (HttpOnly, Secure, SameSite=Lax, durée de vie 15 min), jeton de rafraîchissement (HttpOnly, restreint au chemin /api/v1/auth/refresh, 7 jours), et session admin (30 min coulissants) pour les seuls utilisateurs autorisés. Conformément à l’Art. 6 nLPD et à l’Art. 7 RGPD, ces cookies strictement nécessaires n’exigent pas de consentement ; aucune bannière cookies n’est donc affichée sur la WebApp.

Nous utilisons par ailleurs le localStorage du navigateur pour stocker localement les préférences (langue, thème, brouillons de réception) et IndexedDB (Dexie.js) pour la mise en cache hors-ligne des données chantier. Ces stockages restent sur votre appareil : aucune donnée n’est transmise à un tiers, aucun pixel de tracking, aucun script d’analyse externe.

10. Outils d’intelligence artificielle

Des outils d’intelligence artificielle peuvent être utilisés en interne à des fins d’optimisation technique, d’audit de sécurité et d’amélioration continue du Service (revue de code, détection d’anomalies, analyse de performance).

Aucune donnée personnelle des Utilisateurs n’est transmise à ces outils, ne fait l’objet d’un traitement automatisé par IA, ni n’est utilisée pour l’entraînement de modèles tiers. Les contenus saisis dans l’Application (chantiers, réserves, photos, commentaires) demeurent intégralement hors de tout périmètre d’entraînement ou de génération automatique.

11. Modifications de cette politique

Nous nous réservons le droit de modifier cette politique de confidentialité à tout moment. En cas de modification substantielle, vous serez notifié(e) par e-mail ou via une notification dans l’application au moins 30 jours avant l’entrée en vigueur des changements.

La poursuite de l’utilisation du service après notification vaut acceptation des modifications.

12. Supprimer mes données

Droit à la suppression — nLPD (Suisse) / RGPD

Conformément à la nLPD et au RGPD, vous pouvez à tout moment demander la suppression complète de votre compte et des données personnelles associées.

Quand l'exercer

  • Les données ne sont plus nécessaires à leur finalité initiale
  • Vous retirez votre consentement
  • Vous vous opposez au traitement
  • Les données sont traitées de manière illicite

Procédure

Cliquez sur le bouton ci-dessous et confirmez avec votre mot de passe. La suppression est immédiate et irréversible. Vous pouvez également nous contacter par écrit à privacy@finitoapp.ch en précisant les données concernées.

Délais

En Suisse (nLPD), les demandes écrites sont traitées dans un délai de 30 jours. Sous RGPD, le délai est d'un mois. La suppression via le bouton ci-dessous est effectuée immédiatement.

Limites

Le droit à la suppression n'est pas absolu. Certaines données peuvent être conservées pour satisfaire des obligations légales (ex : comptabilité, facturation), l'intérêt public ou la liberté d'expression.

FinitoApp — Constat. Photo. Finito !