Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
- Simple, fast routing engine.
- Powerful dependency injection container.
- Multiple back-ends for session and cache storage.
- Expressive, intuitive database ORM.
- Database agnostic schema migrations.
- Robust background job processing.
- Real-time event broadcasting.
Laravel is accessible, powerful, and provides tools required for large, robust applications.
Laravel has the most extensive and thorough documentation and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
You may also try the Laravel Bootcamp, where you will be guided through building a modern Laravel application from scratch.
If you don't feel like reading, Laracasts can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel Partners program.
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the Laravel documentation.
In order to ensure that the Laravel community is welcoming to all, please review and abide by the Code of Conduct.
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via taylor@laravel.com. All security vulnerabilities will be promptly addressed.
The Laravel framework is open-sourced software licensed under the MIT license.
Cahier des Charges - Application Web de Gestion de Faculté*** L'application web de gestion de faculté est une plateforme numérique destinée à moderniser et centraliser la gestion administrative et pédagogique d'un établissement d'enseignement supérieur. Elle vise à remplacer les processus manuels etles systèmes disparates par une solution intégrée, sécurisée et accessible.
****Problématique Actuelle et Enjeux Problématique actuelle Gestion dispersée des données administratives et pédagogiques Processus manuels chronophages et source d'erreurs Manque de visibilité en temps réel sur les performanceset statistiques Communication fragmentée entre les différents acteurs Absence d'historique centralisé et de traçabilité Enjeux et bénéfices attendus Efficacité opérationnelle : Automatisation des tâchesrépétitives Centralisation des données : Vision globale etcohérente de l'établissement Amélioration de la communication : Fluidification des échanges entre acteurs Traçabilité : Historique complet des actions et décisions Accessibilité : Interface moderne et responsive accessible 24h/24
Objectifs du Projet Objectifs fonctionnels Centraliser et sécuriser toutes les données administratives et pédagogiques. Automatiser les processus de gestion des utilisateurs, cours, notes et présences. Fournir des tableaux de bord et rapports en temps réel. Faciliter la communication entre administrateurs, professeurs et étudiants. Assurer la traçabilité complète des actions utilisateurs. Objectifs techniques Développer une architecture moderne et scalable. Garantir la sécurité des données et des accès. Assurer des performances optimales même avec une charge élevée. Fournir une interface utilisateur intuitive et responsive. Permettre l'intégration future avec d'autres systèmes. Objectifs de qualité Disponibilité de 99.5% minimum. Temps de réponse inférieur à 2 secondes pour les opérations courantes. Interface accessible selon les standards WCAG 2.1. Sécurité conforme aux normes RGPD
Périmètre du Projet Inclus dans le projet Gestion complète des utilisateurs (administrateurs, professeurs, étudiants) Gestion des cours, modules et programmes Système de notes et évaluations Gestion des présences et absences Calendrier académique intégré Système de communication interne Génération de rapports et statistiques Interface d'administration complète Exclus du projet (Phase 2) Intégration avec systèmes externes (comptabilité, RH) Module de facturation et paiement Application mobile native Système de visioconférence intégré Gestion des ressources matérielles (salles, équipements) Analyse des Besoins par Profil Utilisateur L'application est conçue pour répondre aux besoins spécifiques de chaque type d'utilisateur, garantissant une expérience personnalisée et efficace. Besoins Administrateur Gestion des utilisateurs: Créer, modifier, supprimer des comptes, attribuer rôles, consulter historique. Gestion académique: Organiser programmes, affecter cours, gérer calendriers, configurer évaluations. Suivi et reporting: Générer rapports de performance, consulter statistiques, analyser résultats, exporter données. Besoins Professeur Gestion des cours: Accéder à la liste de ses cours, partager ressources, planifier séances et examens, gérer groupes. Évaluation et suivi: Saisir notes, gérer présences, suivre progression, générer bulletins. Communication: Envoyer messages, publier annonces, programmer rendez-vous, recevoir notifications. Besoins Étudiant Suivi académique: Consulter notes, visualiser emploi du temps, accéder ressources, télécharger bulletins. Communication: Recevoir annonces, contacter enseignants, accéder informations administratives, consulter calendrier. Gestion personnelle: Mettre à jour informations, consulter dossier académique, suivre progression, accéder historique notes. Spécifications Techniques L'architecture système est conçue pour être robuste et performante, utilisant des technologies modernes pour assurer une expérience utilisateur fluide et sécurisée. Architecture générale Frontend (SPA) API REST Backend Laravel Base de données MySQL Composants techniques Frontend : Single Page Application (SPA) API : RESTful avec authentification JWT Backend : Laravel 12 avec architecture MVC Base de données : MySQL 8.0+ avec InnoDB Cache : Redis pour les sessions et cache applicatif Technologies Utilisées Frontend : HTML5, TailwindCSS, JavaScript ES6+, Fetch API Backend : Laravel 12, Laravel Sanctum, Eloquent ORM, Laravel Validation Base de données : MySQL 8.0+, Migrations Laravel, Indexes optimisés Sécurité Authentification et autorisation : JWT Tokens, RBAC, Middleware, Rate Limiting Protection des données : Chiffrement HTTPS, Validation, CSRF Protection, XSS Protection Tests et Qualité Une stratégie de tests rigoureuse est mise en place pour garantir la fiabilité, la performance et la sécurité de l'application. Stratégie de Tests Tests unitaires : Couverture minimum 80% du code backend, tests des modèles, logique métier, API endpoints, validations. Tests d'intégration : Tests des flux utilisateur complets, API avec base de données, permissions et sécurité, performance. Tests utilisateur : Tests d'acceptation avec les parties prenantes, ergonomie et accessibilité, différents navigateurs et appareils, charge et performance. Critères de Qualité Performance : Temps de réponse < 2 secondes pour 95% des requêtes, chargement initial < 3 secondes, support de 100 utilisateurs concurrents minimum, optimisation des requêtes base de données. Sécurité : Audit de sécurité complet, tests de pénétration, conformité RGPD, chiffrement des données sensibles. Conclusion et Planification Ce cahier des charges définit les bases d'une application web moderne et complète pour la gestion de faculté. Le projet s'articule autour de trois piliers : efficacité opérationnelle, sécurité des données, et expérience utilisateur optimale. ******Phases du ****** Phase 1 : 1 Analyse et Conception (2 semaines) Livrables : Cahier des charges validé, Maquettes UI/UX, Architecture technique détaillée, Modèle finalisé. 2 Phase 2 : Développement Backend (4 semaines) Livrables : API REST complète, Base de données avec données de test, Tests unitaires et d'intégration, Documentation API. Phase 3 : 3 Développem ent Frontend (3 semaines) Livrables :Interface utilisateur complète, Intégration avec l'API, Tests d'interface, Guide utilisateur. 4 Phase 4 : Tests et Déploiement (2 semaines) Livrables : Tests d'acceptation validés, Application déployée en production, Formation des utilisateurs, Documentation technique.
POST /api/loginBody:
{
"email": "string",
"password": "string"
}POST /api/registerBody:
{
"name": "string",
"email": "string",
"password": "string",
"password_confirmation": "string",
"role_id": "integer"
}POST /api/logoutNécessite un token d'authentification
GET /api/usersParamètres de requête:
search: Recherche par nom ou emailrole_id: Filtrer par rôledepartment_id: Filtrer par département
POST /api/usersBody:
{
"name": "string",
"email": "string",
"password": "string",
"role_id": "integer",
"department_id": "integer"
}POST /api/users/bulkBody:
{
"users": [
{
"name": "string",
"email": "string",
"password": "string",
"role_id": "integer",
"department_id": "integer"
}
]
}GET /api/coursesParamètres de requête:
search: Recherche par titre ou descriptiondepartment_id: Filtrer par départementteacher_id: Filtrer par enseignantacademic_year_id: Filtrer par année académique
POST /api/coursesBody:
{
"title": "string",
"description": "string",
"department_id": "integer",
"teacher_id": "integer",
"academic_year_id": "integer",
"credits": "integer",
"max_students": "integer"
}GET /api/enrollmentsParamètres de requête:
student_id: Filtrer par étudiantcourse_id: Filtrer par coursstatus: Filtrer par statut (pending, approved, rejected)
POST /api/enrollmentsBody:
{
"student_id": "integer",
"course_id": "integer"
}POST /api/enrollments/{id}/approvePOST /api/enrollments/{id}/rejectGET /api/attendanceParamètres de requête:
student_id: Filtrer par étudiantcourse_id: Filtrer par coursdate: Filtrer par datestatus: Filtrer par statut (present, absent, late)
POST /api/attendanceBody:
{
"student_id": "integer",
"course_id": "integer",
"date": "date",
"status": "string"
}POST /api/attendance/bulkBody:
{
"course_id": "integer",
"date": "date",
"attendance": [
{
"student_id": "integer",
"status": "string"
}
]
}GET /api/gradesParamètres de requête:
student_id: Filtrer par étudiantcourse_id: Filtrer par courstype: Filtrer par type (exam, assignment, quiz, project)min_grade: Note minimalemax_grade: Note maximale
POST /api/gradesBody:
{
"student_id": "integer",
"course_id": "integer",
"type": "string",
"grade": "numeric",
"comments": "string"
}POST /api/grades/bulkBody:
{
"course_id": "integer",
"type": "string",
"grades": [
{
"student_id": "integer",
"grade": "numeric",
"comments": "string"
}
]
}GET /api/resourcesParamètres de requête:
course_id: Filtrer par courstype: Filtrer par type (document, presentation, video, link)search: Recherche par titre ou description
POST /api/resourcesBody:
{
"course_id": "integer",
"title": "string",
"description": "string",
"type": "string",
"file": "file",
"url": "string"
}GET /api/resources/{id}/downloadGET /api/notificationsParamètres de requête:
user_id: Filtrer par utilisateurtype: Filtrer par type (info, warning, success, error)is_read: Filtrer par statut de lecture
POST /api/notificationsBody:
{
"user_id": "integer",
"title": "string",
"message": "string",
"type": "string",
"link": "string"
}POST /api/notifications/{id}/readPOST /api/notifications/{id}/unreadPOST /api/notifications/read-allGET /api/academic-yearsParamètres de requête:
search: Recherche par nom ou descriptionis_active: Filtrer par statut actif
POST /api/academic-yearsBody:
{
"name": "string",
"description": "string",
"start_date": "date",
"end_date": "date",
"is_active": "boolean"
}POST /api/academic-years/{id}/set-active200: Succès201: Création réussie400: Requête invalide401: Non authentifié403: Non autorisé404: Ressource non trouvée422: Erreur de validation500: Erreur serveur