Documentation

Pages légales

Templates RGPD-compliant pour /legal/terms et /legal/privacy — à adapter avant production avec un juriste.

⚠️ Ce sont des templates — pas un avis juridique. Consulte un juriste avant la mise en production, en particulier pour les cas spéciaux (B2B, données sensibles, mineurs, transferts hors UE…).

Pages livrées

  • /legal/terms — Conditions générales d'utilisation (CGU)
  • /legal/privacy — Politique de confidentialité (RGPD)

Layout dédié : app/[locale]/(public)/legal/layout.tsx qui applique les classes Tailwind prose pour un rendu typographique soigné.

Source

Les pages lisent getCachedSiteConfig() pour interpoler appName, appUrl, supportEmail automatiquement → pas besoin de chercher/remplacer quand tu renommes ton app.

lastUpdated est en dur dans chaque page — pense à le bumper quand tu modifies le contenu (et notifier les users par mail si changement substantiel, c'est une obligation RGPD).

Liens

Le <Footer> (composants/layout/footer.tsx) pointe déjà vers ces deux pages dans la colonne Legal. Pas de changement à faire.

Au signup, tu peux ajouter une checkbox "J'accepte les CGU et la politique de confidentialité" — pas inclus par défaut mais recommandé en B2C.

Sous-traitants à mettre à jour

La privacy policy liste les sous-traitants par défaut du boilerplate (Vercel, Neon, Stripe, Resend, OneSignal, R2, PostHog). Si tu en ajoutes ou retires, mets à jour la liste — c'est une obligation RGPD (art. 28).

La bannière de consentement (components/shared/cookie-banner.tsx) gère le opt-in PostHog. Voir aussi : la privacy policy l'explique dans la section Cookies.

Pour ajouter un autre tracker conditionnel à l'opt-in :

  1. Dans cookie-banner.tsx → loadPostHog(), ajoute le chargement de ton tracker (Plausible, Google Analytics…) dans la même fonction
  2. Update la privacy policy section "Sous-traitants" + "Cookies"

Localisation

Les pages sont en français uniquement par défaut. Pour les rendre bilingues :

  1. Move le texte vers messages/{fr,en}.json sous legal.terms / legal.privacy
  2. Use useTranslations ou getTranslations dans les pages
  3. Garde le lastUpdated synchronisé entre les deux versions

Allez plus loin

On this page