Pages publiques¶
Vue d'ensemble¶
Les pages publiques constituent la vitrine de Primatch. Elles sont accessibles sans authentification et servent à présenter l'application, ses fonctionnalités, et à permettre le contact avec l'équipe.
Pages¶
Landing Page (/)¶
Page d'accueil principale de l'application avec :
- Section héro : titre accrocheur, sous-titre, CTA vers l'inscription et la recherche de parties
- Grille de fonctionnalités : 6 cartes présentant les fonctionnalités clés (matchmaking, communauté, géolocalisation, niveaux, statistiques, clubs)
- Section clubs : présentation des avantages pour les gestionnaires de clubs avec CTA d'inscription club
- Header public : logo, liens de navigation (À propos, FAQ, Contact), CTA connexion/inscription
- Footer : liens vers les pages légales, pages de navigation, liens pro
Page À propos (/about)¶
Présentation de Primatch avec :
- Mission et vision : objectifs et ambition de la plateforme
- Valeurs : communauté, excellence, accessibilité, innovation
- Section équipe : présentation de l'équipe fondatrice
- CTA vers l'inscription
Page Contact (/contact)¶
Formulaire de contact fonctionnel :
- Champs : nom, email, sujet, message
- Validation : validation côté client (Zod) et côté serveur (Laravel FormRequest)
- Envoi d'email : le message est envoyé par email à l'adresse de contact configurée
- Feedback : message de succès après envoi, messages d'erreur en cas de problème
Page FAQ (/faq)¶
Foire aux questions avec :
- Chargement dynamique : les questions sont récupérées depuis l'API (
GET /api/v1/settings/faq) - Format accordion : chaque question se déplie/replie au clic
- États : chargement, contenu vide, erreur
Pages légales¶
Trois pages légales génériques utilisant le même composant (LegalContentPage) :
| Page | Route | Clé API |
|---|---|---|
| CGU | /cgu | cgu |
| Politique de confidentialité | /privacy | privacy_policy |
| Mentions légales | /legal | legal_mentions |
Le contenu HTML est récupéré depuis l'API publique des paramètres (GET /api/v1/settings/{key}).
Composants partagés¶
PublicHeader¶
Header sticky présent sur toutes les pages publiques :
- Logo Primatch (lien vers
/) - Navigation : À propos, FAQ, Contact
- CTA d'authentification : Connexion / Inscription (ou bouton "Jouer" si connecté)
- Menu hamburger sur mobile
PublicFooter¶
Footer présent sur toutes les pages publiques :
- Marque : logo et tagline
- Navigation : liens vers les pages publiques principales
- Légal : liens CGU, Confidentialité, Mentions légales
- Pro : inscription club, connexion admin
- Copyright : mention dynamique avec l'année en cours
API Contact¶
POST /api/v1/contact¶
Endpoint public pour le formulaire de contact.
Rate limiting : 5 requêtes par minute (middleware throttle:5,1)
Champs requis :
| Champ | Type | Contraintes |
|---|---|---|
name | string | requis, max 255 |
email | string | requis, format email, max 255 |
subject | string | requis, max 255 |
message | string | requis, min 10, max 5000 |
Réponse : 200 OK avec { "message": "Message envoyé avec succès." }
Comportement :
- Envoie un email à l'adresse configurée (
MAIL_CONTACT_ADDRESSouMAIL_FROM_ADDRESS) - En cas d'erreur d'envoi, l'erreur est journalisée mais le client reçoit toujours un succès (pour ne pas exposer les erreurs de configuration email)
Internationalisation¶
Toutes les pages publiques utilisent le namespace i18n landing avec support FR et EN :
frontend/src/i18n/locales/fr/landing.jsonfrontend/src/i18n/locales/en/landing.json
Les clés sont organisées par section : hero.*, features.*, clubs_section.*, about.*, contact.*, faq.*, footer.*.