Site Web + API
Documentation du Portail Professeurs
Table des matières
- Introduction
- Architecture technique
- Structure du projet
- Fonctionnalités principales
- Guide d'utilisation
- API et endpoints
- Base de données
- Sécurité
- Déploiement
- Dépannage
1. Introduction
Le Portail Professeurs est une application web conçue pour aider les enseignants à gérer efficacement leurs classes, les absences des élèves, les réservations de salles, et à communiquer avec les autres membres de l'établissement. Cette plateforme centralisée offre une interface intuitive et responsive qui s'adapte à tous les appareils.
Objectifs du projet
- Simplifier la gestion administrative pour les enseignants
- Améliorer le suivi des absences des élèves
- Faciliter la réservation des salles
- Offrir des outils de communication entre les membres de l'équipe éducative
- Fournir des statistiques et des rapports sur les performances et l'assiduité
2. Architecture technique
Frontend
- Framework : Next.js 14 (App Router)
- Langage : TypeScript
- UI/UX : Tailwind CSS avec shadcn/ui
- État client : React Hooks
- Requêtes API : Fetch API
Backend
- Framework : ASP.NET Core 9
- Langage : C#
- Architecture : API RESTful
- Authentification : JWT (JSON Web Tokens)
- WebSockets : Pour la messagerie en temps réel
Base de données
- SGBD : MySQL
- ORM : Entity Framework Core
3. Structure du projet
Frontend (Next.js)
/app # Dossier principal des routes (App Router)
/absences # Gestion des absences
/classes # Gestion des classes
/login # Page de connexion
/messages # Système de messagerie
/notifications # Centre de notifications
/parametres # Paramètres utilisateur
/points # Système de points
/rapports # Génération de rapports
/reservations # Réservation de salles
/salles # Gestion des salles
/statistiques # Tableaux de bord et statistiques
/layout.tsx # Layout principal
/globals.css # Styles globaux
/page.tsx # Page d'accueil
/components # Composants réutilisables
/ui # Composants UI (shadcn)
/header.tsx # En-tête de l'application
/sidebar.tsx # Barre latérale de navigation
/auth-guard.tsx # Protection des routes authentifiées
/lib # Services et utilitaires
/api-client.ts # Client API centralisé
/auth-service.ts # Service d'authentification
/absence-service.ts # Service de gestion des absences
/class-service.ts # Service de gestion des classes
/message-service.ts # Service de messagerie
/points-service.ts # Service de gestion des points
/room-service.ts # Service de gestion des salles
/settings-service.ts # Service de gestion des paramètres
/public # Fichiers statiques
Backend (ASP.NET Core)
/Controllers # Contrôleurs API
/AuthController.cs # Authentification
/Teacher # Contrôleurs spécifiques aux enseignants
/TeacherAbsenceController.cs
/TeacherClassController.cs
/TeacherProfileController.cs
/TeacherRoomController.cs
/TeacherSettingsController.cs
/TeacherStatController.cs
/Message # Contrôleurs de messagerie
/MessageController.cs
/Points # Contrôleurs de gestion des points
/PointsController.cs
/Models # Modèles de données
/Absence.cs
/Class.cs
/Message.cs
/Notification.cs
/PointsConfig.cs
/PointsHistory.cs
/Reservation.cs
/Room.cs
/Schedule.cs
/Settings.cs
/Student.cs
/StudentPoints.cs
/Teacher.cs
/User.cs
/GestionAbsencesContext.cs # Contexte EF Core
/DTO # Objets de transfert de données
/AbsenceDTO.cs
/AuthDTO.cs
/ClassDTO.cs
/Message
/MessageDTO.cs
/ConversationDTO.cs
/Points
/StudentPointsDTO.cs
/PointsHistoryDTO.cs
/Teacher
/TeacherProfileDTO.cs
/Services # Services métier
/Teacher
/TeacherAbsenceService.cs
/TeacherClassService.cs
/TeacherProfileService.cs
/TeacherRoomService.cs
/TeacherSettingsService.cs
/TeacherStatService.cs
/Message
/MessageService.cs
/Points
/PointsService.cs
/WebSocket # Gestion des WebSockets
/WebSocketHandler.cs
/WebSocketMiddleware.cs
/WebSocketExtensions.cs
/Utils # Utilitaires
/DateOnlyJsonConverter.cs
/DateUtils.cs
/Middleware # Middlewares personnalisés
/BearerPrefixMiddleware.cs
/RequestResponseLoggingMiddleware.cs
/Scripts # Scripts SQL
4. Fonctionnalités principales
Authentification et sécurité
- Connexion sécurisée avec JWT
- Protection des routes authentifiées
- Gestion des rôles (professeur, admin)
- Déconnexion automatique après inactivité
Gestion des classes
- Liste des classes assignées à l'enseignant
- Détails de chaque classe avec liste des élèves
- Statistiques de présence par classe
- Recherche et filtrage des classes
Gestion des absences
- Saisie des absences par classe ou par élève
- Historique des absences
- Justification des absences
- Statistiques d'assiduité
- Exportation des données d'absence
Système de points
- Attribution de points aux élèves
- Classement des élèves par points
- Historique des points attribués
- Configuration des règles d'attribution
Réservation de salles
- Consultation des salles disponibles
- Réservation de créneaux horaires
- Gestion des caractéristiques des salles
- Calendrier des réservations
Messagerie
- Communication en temps réel via WebSockets
- Conversations privées entre utilisateurs
- Notifications de nouveaux messages
- Statut des messages (envoyé, livré, lu)
Rapports et statistiques
- Génération de rapports personnalisés
- Tableaux de bord avec indicateurs clés
- Graphiques d'assiduité et de performance
- Exportation des rapports en différents formats
Paramètres utilisateur
- Personnalisation du profil
- Choix du thème (clair/sombre)
- Préférences de notification
- Gestion du mot de passe
5. Guide d'utilisation
Connexion au portail
- Accédez à la page de connexion
- Entrez les identifiants suivants :
- Email :
teacher@teacher.fr
- Mot de passe :
admin123
- Email :
- Cliquez sur "Se connecter"
Navigation dans l'application
- Utilisez la barre latérale pour accéder aux différentes sections
- Le menu supérieur contient les notifications et l'accès au profil
- Le tableau de bord principal affiche un résumé des informations importantes
Gestion des classes
- Accédez à la section "Classes" depuis la barre latérale
- Consultez la liste de vos classes
- Cliquez sur une classe pour voir les détails et la liste des élèves
- Utilisez la barre de recherche pour filtrer les classes
Saisie des absences
- Accédez à la section "Absences" depuis la barre latérale
- Cliquez sur "Saisir des absences"
- Sélectionnez la classe concernée
- Cochez les élèves absents
- Renseignez la date et le motif si connu
- Validez la saisie
Réservation d'une salle
- Accédez à la section "Salles" depuis la barre latérale
- Consultez les salles disponibles
- Cliquez sur "Nouvelle réservation"
- Sélectionnez la salle, la date et l'horaire
- Indiquez le motif de la réservation
- Validez la réservation
Utilisation du système de points
- Accédez à la section "Points" depuis la barre latérale
- Consultez le classement des élèves
- Pour attribuer des points :
- Accédez à la fiche d'un élève
- Cliquez sur "Ajouter des points"
- Saisissez le nombre de points et le motif
- Validez l'attribution
Envoi d'un message
- Accédez à la section "Messages" depuis la barre latérale
- Cliquez sur "Nouveau message"
- Sélectionnez le destinataire
- Rédigez votre message
- Envoyez le message
Génération d'un rapport
- Accédez à la section "Rapports" depuis la barre latérale
- Sélectionnez le type de rapport
- Définissez les paramètres (période, classe, etc.)
- Générez le rapport
- Consultez-le en ligne ou exportez-le
Modification des paramètres
- Accédez à la section "Paramètres" depuis la barre latérale
- Modifiez votre profil, thème ou préférences
- Enregistrez les modifications
6. API et endpoints
Authentification
POST /api/auth/login
- Connexion utilisateurGET /api/auth/test
- Test d'authentificationGET /api/auth/test-professeur
- Test d'autorisation professeur
Gestion des classes
GET /api/teacher/classes
- Liste des classesGET /api/teacher/classes/{id}
- Détails d'une classe
Gestion des absences
GET /api/teacher/absences
- Liste des absencesGET /api/teacher/absences/{id}
- Détails d'une absencePOST /api/teacher/absences
- Création d'une absencePUT /api/teacher/absences/{id}
- Mise à jour d'une absenceDELETE /api/teacher/absences/{id}
- Suppression d'une absence
Gestion des salles
GET /api/teacher/rooms
- Liste des sallesGET /api/teacher/rooms/{id}
- Détails d'une salleGET /api/teacher/rooms/{id}/reservations
- Réservations d'une salle
Réservations
GET /api/teacher/reservations
- Liste des réservationsGET /api/teacher/reservations/{id}
- Détails d'une réservationPOST /api/teacher/reservations
- Création d'une réservationPUT /api/teacher/reservations/{id}
- Mise à jour d'une réservationDELETE /api/teacher/reservations/{id}
- Suppression d'une réservation
Messagerie
GET /api/messages
- Liste des conversationsGET /api/messages/{userId}
- Messages avec un utilisateurPOST /api/messages
- Envoi d'un messagePUT /api/messages/{id}/read
- Marquer un message comme luWebSocket /ws
- Communication en temps réel
Système de points
GET /api/points/students
- Points des élèvesGET /api/points/students/{id}
- Points d'un élèveGET /api/points/ranking
- Classement des élèvesPOST /api/points/add
- Attribution de pointsGET /api/points/history/{studentId}
- Historique des points
Profil et paramètres
GET /api/teacher/profile
- Profil de l'enseignantPUT /api/teacher/profile
- Mise à jour du profilGET /api/teacher/settings
- Paramètres utilisateurPUT /api/teacher/settings
- Mise à jour des paramètres
7. Base de données
Schéma de la base de données
La base de données est organisée autour des entités principales suivantes :
- Users : Utilisateurs du système (enseignants, administrateurs)
- Teachers : Informations spécifiques aux enseignants
- Students : Informations sur les élèves
- Classes : Classes et leurs associations avec les enseignants
- Absences : Enregistrements des absences des élèves
- Rooms : Salles disponibles pour réservation
- Reservations : Réservations des salles
- Messages : Messages échangés entre utilisateurs
- Notifications : Notifications système
- Settings : Paramètres utilisateur
- StudentPoints : Points attribués aux élèves
- PointsHistory : Historique des attributions de points
- PointsConfig : Configuration du système de points
Relations principales
- Un enseignant peut avoir plusieurs classes
- Une classe peut avoir plusieurs élèves
- Un élève peut avoir plusieurs absences
- Un utilisateur peut avoir plusieurs réservations
- Un utilisateur peut envoyer/recevoir plusieurs messages
- Un élève peut avoir plusieurs entrées dans l'historique des points
8. Sécurité
Authentification
- Utilisation de JWT (JSON Web Tokens) pour l'authentification
- Stockage sécurisé des tokens côté client
- Expiration automatique des tokens
- Vérification des rôles pour l'accès aux ressources
Protection des données
- Hachage des mots de passe avec SHA-256
- Validation des entrées côté client et serveur
- Protection contre les attaques CSRF
- Utilisation de HTTPS pour toutes les communications
Autorisations
- Système de rôles (professeur, admin)
- Vérification des autorisations pour chaque action
- Isolation des données par utilisateur
- Journalisation des actions sensibles
9. Déploiement
Prérequis
- Node.js 18+ pour le frontend
- .NET 9 SDK pour le backend
- MySQL 8+ pour la base de données
- Serveur web (Nginx recommandé)
- Proxy Reverse Caddy
Étapes de déploiement
-
Base de données
- Créer une base de données MySQL
- Exécuter les scripts de migration
-
Backend
- Compiler l'application ASP.NET Core
- Configurer les variables d'environnement
- Déployer sur un serveur compatible .NET
-
Frontend
- Construire l'application Next.js (
next build
) - Déployer les fichiers statiques
- Configurer le serveur web pour servir l'application
- Construire l'application Next.js (
Configuration
- Fichier
.env
pour les variables d'environnement frontend - Fichier
appsettings.json
pour la configuration backend - Configuration de la base de données dans
GestionAbsencesContext.cs
10. Dépannage
Problèmes courants
Erreur de connexion
- Vérifier les identifiants (teacher@teacher.fr / admin123)
- Vérifier que le serveur backend est accessible
- Vérifier les logs du serveur pour des erreurs d'authentification
Données non affichées
- Vérifier la connexion au serveur backend
- Vérifier les requêtes dans la console du navigateur
- Vérifier que l'utilisateur a les permissions nécessaires
Erreurs WebSocket
- Vérifier que le serveur WebSocket est en cours d'exécution
- Vérifier la configuration du proxy si applicable
- Vérifier les logs du serveur pour des erreurs de connexion
Problèmes de performance
- Vérifier la charge du serveur
- Optimiser les requêtes à la base de données
- Vérifier les index de la base de données
Logs et monitoring
- Les logs frontend sont disponibles dans la console du navigateur
- Les logs backend sont stockés dans le dossier
/logs
- Utiliser les outils de développement du navigateur pour déboguer les problèmes frontend
- Utiliser les outils de débogage de Visual Studio pour le backend
No Comments