SAE : Application Web de Gestion des Sauveteurs (Spéléo-secours)
Une appli de gestion de crise pour le Spéléo-Secours Français. PHP côté serveur, MariaDB pour les données, planning en temps réel pour suivre 50+ sauveteurs sur des opérations de plusieurs jours.
1. Le Défi — Gestion de Crise et Fatigue
En spéléo-secours, une intervention peut durer trois jours d'affilée. Gérer la fatigue de 50 bénévoles sans outil adapté, c'est risquer l'accident. L'appli devait être lisible en coup d'œil — pas question d'un tableau Excel improvisé à 3h du matin.
Exigences Fonctionnelles
- Sécurité et Accès — Auth robuste avec profils Administrateur, Gestionnaire, Lecture.
- Gestion des Données — Sauveteurs, spécialités, informations d'opération.
- Planning — Tableau dynamique avec colonnes par intervalles de 30 minutes.
- Code Couleur — Visualisation instantanée : disponible, sous terre, repos, préparation.
2. La Solution Technique
Modélisation BDD (MariaDB)
- MariaDB 10+ — Base relationnelle.
- Tables Maîtresses — Utilisateurs, sauveteurs, spécialités, statuts.
- Table Planning — Affectations liées à un index temporel (tranches 30 min).
- Hachage — Mots de passe sécurisés via fonctions de hachage.
PHP & Sécurité
- PHP 7.4+ — Logique de connexion, requêtes BDD, génération HTML dynamique.
- Sessions — Gestion des droits Admin / Gestionnaire / Lecture.
- Frise Chronologique — Calcul dynamique des colonnes depuis l'heure de début.
- Validation — Sécurisation POST/GET contre injections SQL et XSS.
-- Table planning (extrait)
CREATE TABLE planning (
id INT PRIMARY KEY AUTO_INCREMENT,
sauveteur_id INT,
tranche_index INT, -- index de 30min depuis debut_op
statut ENUM('disponible','sous_terre','repos','preparation'),
FOREIGN KEY (sauveteur_id) REFERENCES sauveteurs(id)
);
3. Résultats & Compétences
- Stack fonctionnelle — PHP + MariaDB + sessions : l'appli tourne, le planning s'affiche, les droits bloquent ce qu'ils doivent bloquer.
- Auth multi-profils — Trois niveaux d'accès distincts, chacun avec ses vues et ses permissions. Aucun gestionnaire ne peut écraser le travail d'un autre.
- Données temporelles — Modéliser des tranches de 30 min sur 72h m'a forcé à réfléchir à la structure avant de coder. C'est là qu'une BDD bien pensée fait la différence.
- Leçon terrain — Une interface de crise ne peut pas être compliquée. Le code couleur, c'est pas du design — c'est une contrainte opérationnelle.