# Moelleux — Documentation technique complete > Conformite Loi 25 automatisee pour les PME quebecoises. Moelleux est un SaaS developpe par Horizon-Cumulus (9322-8310 Québec inc.) (Joliette, Quebec) qui permet aux PME de se conformer a la Loi 25 du Quebec en moins de 5 minutes. ## Fonctionnalites detaillees ### Scan automatique - Detection des cookies (first-party et third-party) via Browsershot + Playwright - Identification des scripts tiers (Google Analytics, Meta Pixel, HubSpot, etc.) - Detection du CMS (WordPress, Shopify, etc.) - Detection de bannieres de consentement existantes - Resultat en 15 secondes ### Questionnaire Loi 25 - 10 questions essentielles sur l'entreprise - Pre-remplissage intelligent base sur les resultats du scan - Secteurs d'activite, types de collecte, tiers impliques - Responsable de la protection des renseignements personnels ### Generation de politique par IA - Utilise Claude par Anthropic (Haiku pour classification, Sonnet pour generation) - 9 sections obligatoires selon la Loi 25 du Quebec - Pre-filtrage PHP obligatoire pour reduire les tokens (75-90% de reduction) - Versionnage automatique des politiques - Hash du prompt pour tracabilite ### Banniere de consentement - Script embed < 5 KB, ES6 natif, zero dependance - Servi via BunnyCDN (cdn.moelleux.ca), cache 24h - Installation en une ligne: - Themes: light, dark, auto (suit prefers-color-scheme) - Positions: bottom-left, bottom-right, bottom-center - Categories: essentiels (toujours actifs), analytique, marketing, preferences - Cookie signe cote client: moelleux_{site_key}, duree 13 mois - Conformite WCAG 2.1 AA (focus trap, aria-labels, role="dialog") ### Tableau de bord - Statistiques de consentement quotidiennes agreges - Taux d'acceptation par categorie - Export audit pour la Commission d'acces a l'information (CAI) ### Plugin WordPress - Installation simplifiee - Integration native avec le scanner ## Architecture technique ### Infrastructure - Hebergement: OVH Beauharnois, Quebec (residence des donnees obligatoire) - Base de donnees: MySQL 8 - Cache / Queues: Redis - CDN: BunnyCDN (pull zone) ### Stack - Backend: Laravel 13 - Interface admin: Filament 5 + Livewire - Front interactif: Livewire + Alpine.js - Script embed: JavaScript Vanilla ES6 - PDF: DomPDF + pdftk - Scanner headless: Browsershot + Playwright - Stockage logs: Wasabi S3 (ca-central-1) ### Sous-domaines - moelleux.ca: Interface publique + dashboard client - api.moelleux.ca: API interne (rate-limited, JSON only) - cdn.moelleux.ca: Scripts embed via BunnyCDN - moelleux.ca/admin: Back-office Filament 5 - moelleux.ca/p/{key}: Politique publique sans auth ### Queues nommees - high: generation politique, provision - default: statistiques - low: archivage S3 ### Securite - Validation stricte sur toutes les entrees - Anonymisation IP: suppression dernier octet IPv4 - JWT HS256 pour SSO WHMCS (5 min max) - Rate limiting sur endpoints publics - Headers securite: CSP, X-Frame-Options, HSTS - Aucune cle API en dur ## Plans et tarification | Plan | Canal | Prix | |------|-------|------| | Essentiel | Stripe self-serve | 25$/an | | Professionnel | Stripe self-serve | 45$/an | | Bronze | WHMCS addon Moneris | 10$/an | | Argent/Or | Inclus forfait HCU | inclus | | Agence heberge HCU | WHMCS | 7.50$/an | | Agence externe | WHMCS | 12.50$/an | ## Loi 25 du Quebec La Loi 25 (anciennement projet de loi 64) modernise la protection des renseignements personnels au Quebec. Entree en vigueur progressive depuis septembre 2022, pleinement applicable depuis septembre 2024. Elle impose aux entreprises: - Politique de confidentialite accessible et detaillee - Consentement explicite pour la collecte de renseignements personnels - Responsable de la protection des renseignements personnels designe - Evaluation des facteurs relatifs a la vie privee (EFVP) - Notification obligatoire en cas d'incident ## Integration (documentation integrateur) Documentation publique complete: https://moelleux.ca/docs (pages: /docs/installation, /docs/wordpress, /docs/api, /docs/ia). ### Installation de l'embed Une seule ligne, idealement avant : - {site_key}: UUID du site (visible dans le tableau de bord, section Banniere ; meme cle que /p/{site_key}). - async: ne bloque jamais le rendu de la page. ### Gating des scripts tiers Pour charger un script seulement apres consentement, ajouter l'attribut data-consent avec la categorie : - Categories: analytics, marketing, functional, preferences. La categorie essential est toujours active. - Mecanisme: le