Skip to content

th0065/SchoolManagement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Projet SchoolApp Ce projet est une application Spring Boot pour la gestion d'une école. Il inclut des fonctionnalités pour gérer les étudiants, les enseignants, les cours, les inscriptions, et bien plus encore. L'application est structurée en plusieurs couches (entités, repositories, services, etc.) et utilise des technologies modernes comme Swagger pour la documentation API et OpenAI pour la génération de contenu.

  1. Structure du projet:
  • Packages principaux entities : Contient les classes d'entités JPA qui représentent les tables de la base de données.

Exemples : Student, Teacher, Courses, AcademicYear, etc.

Ces classes sont annotées avec des annotations JPA comme @Entity, @Id, @GeneratedValue, etc.

repositories : Contient les interfaces qui étendent JpaRepository pour interagir avec la base de données.

Exemples : StudentRepository, TeacherRepository, etc.

services : Contient les interfaces de service qui définissent les contrats métier.

Exemples : StudentService, TeacherService, etc.

services.Impl : Contient les implémentations des services.

Exemples : StudentServiceImpl, TeacherServiceImpl, etc.

mappers : Contient les classes ou interfaces pour mapper les entités vers des DTOs (Data Transfer Objects) et vice versa.

Exemples : StudentMapper, TeacherMapper, etc. exception : Contient les exceptions personnalisées utilisées dans l'application.

Exemples : APIException, EntityExistsException, EntityNotFoundException, RequestException.

configs : Contient les classes de configuration Spring.

Exemples : SecurityConfig pour la sécurité, LoggingAspect pour la gestion des logs.

controllers : Contient les contrôleurs qui exposent les endpoints de l'API.

Exemples : StudentController, TeacherController, etc.

src/main/java └── com └── groupeisi └── schoolapp ├── configs │ ├── LoggingAspect.java # Configuration pour la gestion des logs avec AOP │ └── SecurityConfig.java # Configuration de la sécurité (Spring Security) ├── entities │ ├── AcademicYear.java # Entité pour l'année académique │ ├── AdministrativeAgent.java # Entité pour les agents administratifs │ ├── Classes.java # Entité pour les classes │ ├── Courses.java # Entité pour les cours │ ├── HalfYearly.java # Entité pour les semestres │ ├── Kind.java # Entité pour le type (ex: type de cours) │ ├── Program.java # Entité pour les programmes │ ├── Registrations.java # Entité pour les inscriptions │ ├── Sectors.java # Entité pour les secteurs │ ├── Sessions.java # Entité pour les sessions │ ├── Student.java # Entité pour les étudiants │ ├── Subjects.java # Entité pour les matières │ └── Teacher.java # Entité pour les enseignants ├── exception │ └── ResourceNotFoundException.java # Exceptions personnalisées ├── mappers │ ├── TeacherMapper.java # Mapper pour l'entité Teacher │ └── ... # Autres mappers ├── repositories │ ├── TeacherRepository.java # Repository pour l'entité Teacher │ └── ... # Autres repositories ├── services │ ├── TeacherService.java # Interface de service pour Teacher │ └── ... # Autres interfaces de service └── services └── Impl ├── TeacherServiceImpl.java # Implémentation de TeacherService └── ... # Autres implémentations de service src/test/java └── com └── groupeisi └── schoolapp ├── services │ └── TeacherServiceTest.java # Tests unitaires pour TeacherService avec Mockito └── ... # Autres tests logs └── logs.log # Fichier de logs docker-compose.yml # Fichier Docker Compose pour l'application

Technologies utilisées Spring Boot : Framework principal pour le développement de l'application.

Swagger : Utilisé pour la documentation de l'API. Vous pouvez accéder à l'interface Swagger via /swagger-ui.html.

OpenAI : Utilisé pour générer du contenu dynamique et améliorer l'expérience utilisateur.

Docker : Le fichier docker-compose.yml permet de lancer l'application et ses dépendances (comme la base de données) dans des conteneurs Docker.

Mockito : Utilisé pour les tests unitaires des services.

Keycloak: Pour la gestion de la securité ...

Gestion des exceptions L'application utilise des exceptions personnalisées pour gérer les erreurs de manière structurée. Voici les principales exceptions :

APIException : Exception générique pour les erreurs de l'API.

EntityExistsException : Lancée lorsqu'une entité existe déjà dans la base de données.

EntityNotFoundException : Lancée lorsqu'une entité n'est pas trouvée dans la base de données.

RequestException : Lancée en cas d'erreur dans une requête (ex: validation des données).

Ces exceptions sont gérées par APIExceptionHandler, un gestionnaire global d'exceptions qui renvoie des réponses HTTP appropriées.

Exemple de gestion d'exception :

@ControllerAdvice public class APIExceptionHandler extends ResponseEntityExceptionHandler {

@ExceptionHandler(EntityNotFoundException.class)
public final ResponseEntity<ErrorResponse> handleEntityNotFoundException(EntityNotFoundException ex) {
    ErrorResponse error = new ErrorResponse("NOT_FOUND", ex.getMessage());
    return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);
}

}

Logs Les logs de l'application sont gérés via AOP (Aspect-Oriented Programming) et sont enregistrés dans un fichier logs/logs.log à la racine du projet. Le fichier de configuration LoggingAspect.java est utilisé pour logger les appels de méthode dans les services.

Docker Le fichier docker-compose.yml permet de lancer l'application et ses dépendances (comme une base de données PostgreSQL) dans des conteneurs Docker.

Pour excecuter les config dans docker-compose.yml

docker-compose up

Tests Les tests unitaires sont réalisés avec Mockito pour tester les services. Les tests sont situés dans le dossier src/test/java.

Documentation API La documentation de l'API est générée avec Swagger. Vous pouvez accéder à l'interface Swagger via l'URL suivante après avoir démarré l'application :

http://localhost:8080/swagger-ui.html

Comment exécuter le projet Clonez le dépôt :

git clone https://github.com/votre-utilisateur/schoolapp.git

Configurez la base de données dans application.yml.

Lancez l'application avec Docker :

docker-compose up

Configurer Keycloak en mettant comme realm school_realm client: school_client et mettre les infos disponibles dans docker-compose pour keycloak creer un user et essayer d'acceder par cet user

Accédez à l'application via :

http://localhost:8080 Pour accéder à la documentation Swagger :

http://localhost:8080/swagger-ui.html

Contribution Les contributions sont les bienvenues ! Si vous souhaitez contribuer, veuillez suivre les étapes suivantes :

Forkez le projet.

Créez une branche pour votre fonctionnalité (git checkout -b feature/AmazingFeature).

Committez vos changements (git commit -m 'Add some AmazingFeature').

Pushez la branche (git push origin feature/AmazingFeature).

Ouvrez une Pull Request.

Auteurs TRAORE HAROUNA

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors