Aller au contenu

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_ADDRESS ou MAIL_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.json
  • frontend/src/i18n/locales/en/landing.json

Les clés sont organisées par section : hero.*, features.*, clubs_section.*, about.*, contact.*, faq.*, footer.*.