# Maquette — Inscriptions en ligne VBPV 2026/2027

Maquette entièrement fonctionnelle du parcours d'inscription du Volley-Ball Pays Viennois :
page inscriptions relookée → formulaire digital → visualisation de la fiche (mise en page
identique au PDF officiel) → confirmation → enregistrement en base de données.

## Lancer le serveur

Aucune dépendance à installer (utilise le module SQLite intégré de Node.js ≥ 22.5) :

```bash
node server.js          # http://localhost:3000  (variable PORT pour changer de port)
```

## Pages

| URL | Rôle |
|---|---|
| `/` (`index.html`) | Page inscriptions du club (UI/UX revue), boutons formulaire et dépôt de documents |
| `/formulaire.html` | Fiche d'inscription digitale en 5 étapes (dont **questionnaire de santé** QS-SPORT majeur/mineur), bouton **Enregistrer** |
| `/confirmation.html` | Visualisation de la fiche complétée (mise en page du PDF, 3 pages), bouton **Confirmer** |
| `/aide.html` | Guide pas-à-pas MyFFvolley pour finaliser la licence fédérale |
| `/depot.html` | Dépôt de documents (certificat médical, pièce d'identité) en glisser-déposer |
| `/impression.html?id=N` | Impression / export PDF d'une fiche (utilisée par l'admin, `&noprint` pour désactiver l'ouverture auto) |
| `/admin.html` | Espace club : recherche/filtres/tri, suivi des règlements (format onglet SUIVI LICENCES), statuts, documents, mail de paiement, téléchargement PDF, suppression, export CSV |

## Suivi des règlements (admin)

Reproduit l'onglet « SUIVI LICENCES » du classeur du club : coût de la licence (ajustable),
échéances multiples (montant, type CHQ/ESP/CB/VRT/ANCV, date de réception), total réglé,
écart et état **✓ effectué / ⏳ en attente** calculé automatiquement. Cliquer sur le badge
de la colonne « Règlement » ouvre la modale de saisie.

## Fonctionnement

- **Formulaire** : 4 étapes (licencié → contacts d'urgence → autorisations → catégorie).
  Détection automatique mineur/majeur (référence : 1er septembre 2026). Pour un mineur,
  le bloc « autorisation parentale » apparaît et devient obligatoire. La catégorie et le
  tarif sont suggérés d'après l'année de naissance (barème de la fiche 2026/2027).
- **Enregistrer** : la fiche est validée puis stockée en `sessionStorage`, redirection
  vers la page de confirmation (le bouton « Modifier » recharge le formulaire pré-rempli).
- **Confirmer** : envoi `POST /api/inscriptions` → insertion SQLite → numéro de dossier
  `VBPV-2627-XXXX` affiché, possibilité d'imprimer / exporter la fiche en PDF (Cmd+P).
- **Base de données** : `data/inscriptions.db` (SQLite, créée automatiquement).
  Colonnes indexables pour le suivi (nom, catégorie, statut…) + fiche complète en JSON.

## Mail de lien de paiement (espace admin)

- Bouton **« 💳 Envoyer le lien »** sur chaque fiche : aperçu du mail personnalisé
  (nom du licencié, n° de dossier, catégorie, tarif) puis envoi. Le statut
  « ✓ envoyé le … » s'affiche ensuite, avec possibilité de renvoyer.
- Bouton **« ✉️ Modèle du mail de paiement »** : éditeur du sujet et du corps avec
  pastilles cliquables `{{prenom}}`, `{{nom}}`, `{{numero_dossier}}`, `{{categorie}}`,
  `{{tarif}}` (insérées au curseur) et aperçu en direct. Le modèle est stocké en base.
- ⚠️ Dans cette maquette l'envoi est **simulé** (journalisé dans la table
  `emails_envoyes` + console serveur). En production, brancher un vrai envoi SMTP
  (ex. nodemailer) dans la route `POST /api/inscriptions/:id/paiement` de `server.js`.

## API

- `POST /api/inscriptions` — enregistre une fiche confirmée
- `GET /api/inscriptions` — liste résumée
- `GET /api/inscriptions/:id` — fiche complète
- `PATCH /api/inscriptions/:id/statut` — statut `nouveau` / `traite`
- `GET /api/inscriptions/export.csv` — export tableur (Excel/Numbers, séparateur `;`)
- `GET / PUT /api/modele-paiement` — modèle du mail de paiement
- `POST /api/inscriptions/:id/paiement` — envoie le mail de paiement au licencié

## Sécurité & RGPD

Voir **[SECURITE.md](SECURITE.md)** : mesures en place (captcha + honeypot, chiffrement
AES-256-GCM des pièces déposées, consentement RGPD obligatoire, limitation de débit,
en-têtes de sécurité), checklist avant mise en production, et analyse de la piste
« stockage tiers Google Drive/Sheets chiffré » discutée avec l'expert cybersécurité.

## Notes pour la mise en production

- L'espace `/admin.html` n'est **pas protégé** : ajouter une authentification
  (mot de passe, ou le placer derrière l'espace membre du site WordPress).
- Servir en HTTPS (les données sont personnelles — RGPD : prévoir mention d'information
  et durée de conservation).
- Le logo Beach (en-tête droite de la fiche) réutilise le logo salle : remplacer
  `public/img/logo-vbpv.png` par le vrai logo Beach si disponible.
