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.

Rôle : Développeur PHP / Admin BDD Juin 2025 PHP / MariaDB

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.
← ls projets/