01 Architecture
Stack technique du portail client.
Architecture
- Frontend : route
/client/[token]— Next.js 15 App Router - Backend : 11 routes
instance.use()danscustom-routes.ts - Authentification : token magique signé JWT (validé 7 jours), cookie
portail_sessionhttpOnly - Base de données : 4 tables
portail_client_acces,portail_client_session,portail_client_notification,portail_client_action - Sécurité : token unique par client, révocation 1-clic, journal des connexions
02 Routes API
11 endpoints disponibles pour le portail.
| Route | Description |
|---|---|
POST/api/portail/auth | Validation du token magique + création session |
GET/api/portail/me | Profil du client connecté |
GET/api/portail/animaux | Liste des animaux du client |
GET/api/portail/seances | Historique des séances (CAC inclus) |
GET/api/portail/factures | Liste des factures avec statut paiement |
GET/api/portail/notifications | Notifications non lues |
POST/api/portail/devis/:id/signer | Signature électronique Yousign |
POST/api/portail/facture/:id/payer | Initialisation Stripe Checkout |
POST/api/portail/envoyer | Envoi du lien magique par email (côté admin) |
POST/api/portail/access/toggle | Activer/désactiver un accès |
POST/api/portail/confirmer | Confirmer un RDV depuis le portail |
03 4 onglets client
Vues disponibles pour le client connecté.
Onglet Animaux
- Liste des animaux avec photo, espèce, race, âge
- Fiche détaillée : vaccins, traitements, vétérinaire référent
- Mise à jour autorisée des coordonnées non sensibles
Onglet Séances
- Historique chronologique de toutes les séances
- Compte-rendu détaillé, graphique CAC, photos avant/après
- Téléchargement PDF du compte-rendu de séance
Onglet Factures
- Toutes les factures avec statut (Payée / Impayée / En retard)
- Bouton Payer maintenant → Stripe Checkout
- Téléchargement PDF de la facture (NF525)
Onglet Documents
- Devis en attente de signature (signature Yousign intégrée)
- Contrats signés, ordonnances, bilans
- Téléchargement individuel ou en lot ZIP
04 Notes techniques
Bugs corrigés et bonnes pratiques.
R-29 Leaflet race condition : page
/app/clients présentait un crash sur certains navigateurs — fix déployé S66 (placeholder carte au lieu du geocoding externe).Notifications portail : table
portail_client_notification + helper envoyerNotification() (S68) — email auto dès qu'un document est mis à disposition.