first commit

This commit is contained in:
2026-07-21 16:50:58 +02:00
commit 256599626e
407 changed files with 30489 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
# Matomo et consentement cookies
## Activation Matomo
Le chargement de `matomo.js` et toute mesure daudience ne sont possibles que si **les deux** variables Vite suivantes sont définies au build :
| Variable | Exemple | Rôle |
| --------------------- | -------------------------------- | ---------------------------------------------------------------------------------------- |
| `VITE_MATOMO_URL` | `https://analytics.example.com/` | URL du répertoire hébergeant `matomo.js` (slash final recommandé ; il est ajouté sinon). |
| `VITE_MATOMO_SITE_ID` | `1` | Identifiant du site dans Matomo. |
Sans ces variables, aucune mesure Matomo nest initialisée (même après acceptation du bandeau).
Le **bandeau cookies** saffiche toutefois dès quaucun choix nest stocké dans `localStorage`, afin de recueillir le consentement avant toute activation possible du tracker.
Copier `apps/web/.env.example` vers `apps/web/.env.local` pour les essais locaux avec Matomo réel.
### Image Docker / CapRover
Les mêmes variables doivent être disponibles **pendant** `npm run build:web`. Le `Dockerfile` expose des `ARG` (valeurs vides par défaut) puis les recopie en `ENV` avant le build, sur le même principe que `PUBLIC_*` sur un autre projet.
Exemple en local :
```bash
docker build \
--build-arg VITE_MATOMO_URL=https://analytics.example.com/ \
--build-arg VITE_MATOMO_SITE_ID=1 \
-t ben-to-web .
```
Sur CapRover, configurer les **build arguments** équivalents pour limage (pas seulement les variables denvironnement runtime du conteneur).
## Comportement
1. Premier chargement : si aucun choix nest enregistré dans `localStorage` (clé `ben-to-cookie-consent-v1`), le **bandeau** saffiche.
2. **Accepter** : enregistrement du consentement ; si Matomo est configuré, chargement asynchrone de `matomo.js`, puis suivi des pages vues (SPA incluse) et des événements (`trackEvent` dans `apps/web/src/infra/analytics.ts`).
3. **Refuser** : pas de chargement du script ; pas de cookies / hits Matomo.
Le choix est persisté localement ; pour retester le bandeau, supprimer la clé dans les outils développeur ou utiliser une fenêtre privée.
## Liens utiles
- Package consent pur : `@ben-to/privacy/cookie-consent`
- Issue produit / conformité : [#39](https://github.com/kazerlelutin/ben-to/issues/39)