À propos du projet

js-fair-consent est une solution de gestion du consentement open-source conçue pour les sites web qui souhaitent respecter la vie privée des visiteurs tout en continuant à utiliser des outils d'analyse et de marketing de manière éthique et légale. La bibliothèque fournit une bannière de consentement (entièrement personnalisable via la structure HTML et CSS) qui demande l'autorisation aux visiteurs avant de charger n'importe quel script d'analyse. Une fois le consentement donné ou refusé, les services appropriés sont chargés de manière asynchrone et non bloquante, conformément aux bonnes pratiques modernes de performance web. **Fournisseurs d'analyse supportés** - Google Analytics (via gtag.js), avec support du Consent Mode v2 (modes `consent-only` ou `preload`) - Matomo, utilisant son API de consentement native (`requireConsent`, `rememberConsentGiven`, `forgetConsentGiven`) - Umami, avec un mode sans préchargement pour éviter les re-rendus lorsque le consentement est accordé ultérieurement - Hotjar, chargé conditionnellement uniquement lorsque le consentement marketing ou de personnalisation est accordé **Fonctionnalités clés** - Chargement asynchrone et différé des scripts afin que le rendu de la page ne soit jamais bloqué - Les signaux Global Privacy Control (GPC) et Do-Not-Track (DNT) sont automatiquement respectés — lorsqu'ils sont détectés, la bannière se masquette et tous les outils optionnels restent désactivés - Conception privacy-by-design : aucun cookie tant qu'un consentement explicite n'est donné, attributs sécurisés pour les cookies (`SameSite=Lax`, HTTPS uniquement) - Consentement granulaire optionnel : les visiteurs peuvent approuver ou refuser des catégories individuelles (analyse, marketing, personnalisation) au lieu d'un choix unique tout-ou-rien - Compatible CSP : prend en charge les attributs `nonce` et `integrity` pour les configurations strictes de Content Security Policy - i18n intégré: traductions anglais et polonais fournies par défaut, extensible pour d'autres langues - Prêt pour CDN : distribuable directement via jsDelivr ou GitHub Pages **Configuration** La bibliothèque s'initialise via un objet JavaScript simple passé à `ConsentAnalytics.init()`. Les utilisateurs déclarent les services qu'ils souhaitent supporter, fournissent leurs identifiants (par ex. ID de mesure GA, ID de site Umami, URL et ID de site Matomo, ID et version du projet Hotjar), et définissent des options comme `debug`, `locale`, et s'il faut activer le consentement `granular`. Si le consentement granulaire est activé, le cookie stocké devient un objet JSON mappant chaque catégorie à son statut d'approbation, et chaque service vérifie la valeur de catégorie pertinente avant de se charger. **API publique** La bibliothèque expose un petit ensemble de méthodes pour l'accès programmatique : - `ConsentAnalytics.hasConsent()` — retourne un booléen indiquant si un consentement a été donné - `ConsentAnalytics.readPrefs()` — retourne l'objet complet de préférences de consentement - `ConsentAnalytics.writePrefs(prefs)` — enregistre un nouvel état de préférence - `ConsentAnalytics.revokeConsent()` — efface le consentement stocké et affiche à nouveau la bannière - `ConsentAnalytics.trackPageView()` — déclenche manuellement une pageview (utile pour les SPAs) Le projet est sous licence MIT et a été créé par Rafał Masiarek.