RoomBooking
Réservations des salles
Le projet RoomBooking est une application web de réservation de salles développée dans le cadre du BTS SIO option SLAM à MediaSchool IRIS Nice.
L'école MediaSchool IRIS Nice, établissement de formation comptant environ 45 collaborateurs et intervenants, propose des cursus spécialisés en informatique et en digital. Le fonctionnement de l'établissement nécessite une gestion quotidienne de ses infrastructures, notamment les salles de cours, les salles de travaux pratiques et les espaces de travail collaboratif (box de projet).
Dans ce contexte, la gestion des réservations de ces espaces peut devenir complexe lorsqu'elle est réalisée de manière informelle ou dispersée, ce qui peut entraîner des conflits de réservation, un manque de visibilité sur la disponibilité des salles et une charge administrative supplémentaire
Le projet RoomBooking a donc pour objectif de concevoir une application web centralisée permettant de gérer efficacement la réservation des salles et des espaces de travail. L'application permet aux différents acteurs de l'établissement (administrateur, coordinateurs et étudiants) de consulter les disponibilités des salles et d'effectuer des réservations de manière simple et sécurisée.
La solution a été développée à l'aide d'une architecture web moderne reposant sur Symfony, PHP, MySQL et Bootstrap, dans un environnement de développement conteneurisé grâce à Docker.
Le besoin principal du projet est de mettre à disposition de l'établissement une application web permettant de gérer efficacement les réservations de salles et d'espaces de travail
L'application doit permettre aux différents utilisateurs (administrateur, coordinateurs et étudiants) de consulter les salles disponibles et d'effectuer des réservations selon une date et un créneau horaire.
La solution doit également intégrer :
- ◈ un système d'authentification permettant aux utilisateurs de se connecter et d'accéder aux fonctionnalités correspondant à leur rôle
- ◈ la consultation des salles et de leurs caractéristiques (capacité, équipements, disponibilité)
- ◈ la création et l'annulation de réservations de salles
- ◈ la visualisation des disponibilités et des indisponibilités des salles
- ◈ la gestion des salles, des classes et des utilisateurs par l'administrateur
- ◈ la gestion des étudiants au sein des classes par les coordinateurs
L'objectif est de proposer un outil permettant de centraliser la gestion des réservations, améliorer l'organisation des infrastructures et simplifier l'utilisation du service pour les utilisateurs.
Le projet RoomBooking repose sur une architecture web moderne permettant de gérer les réservations de salles et les utilisateurs de manière centralisée.
Backend
- ◈ Symfony (PHP) — framework utilisé pour le développement de l'application et la structuration de la logique métier.
- ◈ PHP — langage utilisé pour le développement côté serveur.
- ◈ MySQL — base de données relationnelle utilisée pour stocker les informations liées aux salles, utilisateurs, classes, réservations et équipements.
- ◈ Doctrine ORM — gestion de la persistance des données et interaction avec la base de données.
Frontend
- ◈ HTML5 / CSS3 — structure et mise en forme de l'interface utilisateur.
- ◈ Bootstrap — framework CSS utilisé pour concevoir une interface responsive.
- ◈ Twig — moteur de templates utilisé par Symfony pour générer les pages dynamiques.
Environnement de développement
- ◈ Docker / Docker Compose — conteneurisation de l'environnement de développement (serveur web, base de données).
- ◈ Git / GitHub — gestion de versions et hébergement du code source.
- ◈ Visual Studio Code — environnement de développement utilisé pour la programmation.
La réalisation du projet RoomBooking a consisté à développer une application web permettant la gestion et la réservation de salles au sein de l'établissement MediaSchool IRIS Nice.
L'application repose sur une architecture web utilisant le framework Symfony, permettant de structurer l'application selon une séparation claire entre les différentes couches (contrôleurs, modèles et vues). Les données sont stockées dans une base de données MySQL, et l'interface utilisateur est générée à l'aide du moteur de templates Twig avec une mise en forme réalisée grâce au framework Bootstrap.
L'application intègre un système d'authentification permettant aux utilisateurs de se connecter et d'accéder aux fonctionnalités correspondant à leur rôle. Trois types d'utilisateurs sont définis dans l'application : un administrateur unique chargé de l'administration globale, ainsi que des coordinateurs et des étudiants, chacun disposant de droits d'accès spécifiques.
Les principales fonctionnalités développées sont :
- ◈ la gestion des salles (consultation des salles, visualisation des équipements et de la capacité)
- ◈ la consultation des disponibilités des salles selon une date et un créneau horaire
- ◈ la création et l'annulation de réservations de salles
- ◈ la gestion des salles, des utilisateurs et des classes par l'administrateur
- ◈ la gestion des étudiants au sein des classes par les coordinateurs
L'application vérifie automatiquement les conflits de réservation, afin d'éviter les doubles
réservations pour une même salle et un même créneau horaire.
Le développement du projet a été réalisé dans un environnement conteneurisé avec Docker,
facilitant la mise en place de l'environnement de développement et l'exécution de l'application.
La réalisation du projet RoomBooking a permis de développer une application web répondant à un besoin concret de gestion des réservations de salles au sein de l'établissement MediaSchool IRIS Nice. La solution mise en place permet de centraliser la gestion des salles, des utilisateurs et des réservations, tout en offrant des fonctionnalités adaptées aux différents rôles de l'application (administrateur, coordinateur et étudiant).
Ce projet m'a permis de mettre en pratique plusieurs compétences liées au développement d'applications web, notamment la conception d'une application avec le framework Symfony, la gestion des données via une base de données relationnelle MySQL et la mise en place d'un système d'authentification avec gestion des rôles utilisateurs. La prise en compte des contraintes fonctionnelles, comme la gestion des disponibilités et la prévention des conflits de réservation, a également constitué un aspect important du développement.
Le projet m'a également permis de travailler dans un environnement de développement conteneurisé avec Docker, facilitant l'installation et la configuration de l'environnement de travail.
Cette réalisation m'a permis de renforcer mes compétences en développement web, modélisation de données et conception d'applications structurées, tout en travaillant sur un projet reproduisant une situation proche d'un contexte professionnel réel.
Dans le cadre du projet RoomBooking, plusieurs livrables ont été réalisés afin de documenter la conception, le développement et l'utilisation de l'application.
Les principales productions associées au projet sont :
- ◈ Cahier des charges : Document décrivant le contexte du projet, les besoins fonctionnels, les rôles utilisateurs et les principales fonctionnalités attendues de l'application.
- ◈ Modèle de données : Schéma de la base de données présentant les entités principales (salles, utilisateurs, classes, réservations) ainsi que leurs relations.
- ◈ Guide utilisateur : Documentation destinée aux utilisateurs (étudiants et coordinateurs) expliquant comment se connecter à l'application, consulter les salles et effectuer une réservation.
- ◈ Guide administrateur : Documentation décrivant les fonctionnalités d'administration de l'application, notamment la gestion des salles, des classes et des utilisateurs.
- ◈ Bilan de projet : Document de synthèse présentant le contexte du projet, les fonctionnalités développées, l'architecture technique mise en œuvre, ainsi que les limites identifiées et les pistes d'amélioration de l'application RoomBooking.
- ◈ Dépôt GitHub du projet : Le code source est versionné et accessible en ligne afin de faciliter sa consultation en cliquant sur ce lien.
- ◈ Captures d'écran de l'application : Illustrations de l'interface utilisateur montrant les différentes fonctionnalités de l'application (consultation des salles, réservations, gestion des utilisateurs, etc.).
- ◈ Documentation technique : README décrivant la structure du projet, les technologies utilisées, l'installation de l'application et son fonctionnement général.
Ces documents permettent de faciliter la compréhension du fonctionnement de l'application et de documenter les différentes étapes du projet, depuis l'analyse des besoins jusqu'à la mise en œuvre de la solution.
Bien que l'application RoomBooking réponde aux besoins principaux de gestion des réservations de salles au sein de MediaSchool IRIS Nice, plusieurs améliorations pourraient être envisagées afin d'enrichir ses fonctionnalités et d'améliorer l'expérience utilisateur.
Certaines évolutions pourraient être mises en place afin d'optimiser l'utilisation de l'application et renforcer ses fonctionnalités, comme :
- ◈ la mise en place d'un système de pagination des listes (salles, utilisateurs, réservations) afin d'améliorer la lisibilité et les performances lorsque le volume de données augmente
- ◈ l'ajout d'une fonctionnalité de réinitialisation de mot de passe, permettant aux utilisateurs de récupérer leur accès via l'envoi d'un lien sécurisé par email
- ◈ le renforcement de la validation des mots de passe, en imposant des règles de complexité (majuscule, chiffre et caractère spécial) afin d'améliorer la sécurité de l'application
- ◈ l'intégration d'une vue calendrier interactive permettant de visualiser les réservations sous forme de planning hebdomadaire ou mensuel
- ◈ l'envoi de notifications par email lors de la création ou de l'annulation d'une réservation
- ◈ la possibilité de créer des réservations récurrentes, par exemple pour réserver une salle chaque semaine pendant une période donnée
- ◈ la génération d'un export PDF du planning d'une salle ou d'un utilisateur
- ◈ la mise en place d'un système de sauvegarde automatique de la base de données afin de sécuriser les données de l'application
À plus long terme, l'application pourrait également évoluer avec l'intégration d'une authentification via le compte Microsoft 365 de l'établissement, le développement d'une application mobile ou d'une Progressive Web App (PWA), ou encore la mise en place d'un tableau de bord analytique permettant d'analyser l'occupation des salles et leur utilisation.
Ces évolutions permettraient de faire évoluer RoomBooking vers un outil encore plus complet et adapté aux besoins de l'établissement.
1. Gérer le patrimoine informatique
- 1.1. Recenser et identifier les ressources numériques J'ai identifié et modélisé les ressources numériques nécessaires au fonctionnement de l'application, notamment les salles, les utilisateurs, les classes, les réservations et les équipements, lors de la conception du modèle de données et de la création des entités avec Doctrine ORM.
- 1.3. Mettre en place et vérifier les niveaux d'habilitation associés à un service J'ai mis en place un système de gestion des habilitations basé sur les rôles utilisateurs (administrateur, coordinateur et étudiant) avec Symfony Security, permettant de contrôler l'accès aux différentes fonctionnalités de l'application selon le profil connecté.
- 1.5. Gérer des sauvegardes J'ai mis en place un système de sauvegarde et de restauration comprenant des scripts Bash (backup.sh et restore.sh) permettant de sauvegarder la base de données MySQL, les volumes Docker, le code source et la configuration. J'ai également intégré un mécanisme de vérification d'intégrité via checksum SHA256 afin de garantir la fiabilité des sauvegardes.
4. Travailler en mode projet
- 4.1. Analyser les objectifs et les modalités d'organisation d'un projet Dans le cadre du projet RoomBooking, j'ai analysé les besoins de l'établissement MediaSchool IRIS Nice afin de définir les objectifs du projet et les fonctionnalités attendues, notamment la gestion des salles, des utilisateurs et des réservations, formalisées dans un cahier des charges.
- 4.2. Planifier les activités J'ai planifié les différentes étapes du projet RoomBooking en organisant le travail en plusieurs phases : analyse et conception du modèle de données, mise en place de l'environnement de développement, développement des fonctionnalités, tests et rédaction de la documentation.
- 4.3. Évaluer les indicateurs de suivi d'un projet et analyser les écarts J'ai suivi l'avancement du projet RoomBooking à l'aide de plusieurs indicateurs. J'ai notamment utilisé un diagramme de Gantt pour planifier et visualiser les différentes phases du projet (analyse, conception, développement, tests, documentation), ce qui m'a permis de suivre l'état d'avancement global et d'anticiper les retards. En complément, j'ai utilisé GitHub pour versionner mon code avec des commits réguliers et structurés, permettant de suivre l'évolution des fonctionnalités, de mesurer la progression du projet et de revenir sur des versions antérieures si nécessaire.
5. Mettre à disposition des utilisateurs un service informatique
- 5.1. Réaliser les tests d'intégration et d'acceptation d'un service J'ai réalisé des tests fonctionnels et d'intégration en vérifiant le bon fonctionnement des différentes fonctionnalités (réservation, gestion des rôles, filtrage des salles, règles métier) et en validant les scénarios utilisateurs afin de garantir la conformité aux besoins exprimés.
- 5.2. Déployer un service J'ai déployé l'application RoomBooking avec l'aide d'un enseignant de la spécialisation SISR, en utilisant Docker Compose pour orchestrer les différents conteneurs (PHP/Symfony, MySQL, Nginx). Cette collaboration entre les spécialités SLAM et SISR m'a permis de mettre en service l'application sur un serveur dans un environnement proche de la production, tout en assurant l'isolation des composants, la reproductibilité de l'environnement et l'accessibilité du service.
6. Organiser son développement professionnel
- 6.1. Mettre en place son environnement d'apprentissage personnel Dans le cadre du projet RoomBooking, j'ai mis en place un environnement de développement complet basé sur Docker, Symfony, MySQL et Visual Studio Code, ainsi que les outils Composer et GitHub afin de structurer et faciliter le développement de l'application.
- 6.4. Développer son projet professionnel Ce projet m'a permis de renforcer concrètement mes compétences en développement backend avec PHP et le framework Symfony, en cohérence avec mon orientation SLAM et mon projet professionnel orienté vers le développement d'applications.