Application permettant de prendre un rendez-vous pour une vaccination COVID dans un centre de vaccination en France.
Créée par Emy LIEUTAUD (31818604), Yunqiao ZHANG (31733827) et Romain PERRELLE (32024667)
Données sur les lieux de vaccination : https://www.data.gouv.fr/fr/datasets/lieux-de-vaccination-contre-la-covid-19/
Projet JAVA basé sur Maven : les dépendances sont donc décrites dans le fichier pom.xml.
Technologies implémentées :
- Basic Auth
- Contrôleur REST
- ETag
- Hibernate
- JWT
- Liquibase
- Métriques avec Micrometer
- PostgreSQL
- RateLimit via Token Bucket
- Spring (Web, Security)
- Swagger
Plusieurs méthodes existent pour lancer le back :
- avec VScode :
Il faut premièrement ouvrir le projet dans VScode.
Ensuite, il faut faire un clique droit sur la classe CovidApiApplication.java qui se trouve dans src/main/java/org/polytech/covid/.
Enfin, il suffit de cliquer sur Run Java. - en ligne de commandes :
Il faut tout d'abord aller à la racine du projet. Puis, il faut exécuter la commande suivante :mvn exec:java -Dexec.mainClass=org.polytech.covid.CovidApiApplication
Le back est maintenant accessible sur le navigateur sur localhost:8080.
/public/ -> destiné à tout utilisateur qui souhaite prendre un rendez-vous sur l'application
/admin/ -> destiné aux professionnels : besoin d'être connecté pour y accéder
/login/ -> reservé aux professionnels pour se créer un compte (/login/nouveau) ou se connecter (/login/authenticate)
/actuator/metrics/ -> accéder aux métriques générées
/swagger-ui -> accéder au swagger (description de l'API REST)
Projet Angular.
Technologies implémentées :
- Bootstrap
- File d'attente
- Formulaire BasicAuth
- Guard : canActivate, canDeactivate
- Interceptors
- Material : core, input, form-field, datepicker, card, button, progress-bar
- Modales
- Promises
- Regex
Pour lancer le front, il faut tout d'abord aller dans le dossier VaccinationCOVID.
Ensuite, il suffit d'exécuter la commande suivante : ng serve
.
Le front est maintenant accessible sur le navigateur sur localhost:4200.
/home/ -> destiné à tout utilisateur qui souhaite prendre un rendez-vous sur l'application
/register/ -> destiné aux professionnels pour se créer un compte
/login/ -> reservé aux professionnels pour se connecter
Il n'appartient pas à un centre précis.
Un seul SuperAdmin existe.
Il peut :
- gérer les centres (/admin/centres/) :
- créer un centre (POST /admin/centres/nouveau)
- afficher les centres (GET /admin/centres et GET /public/centres et GET /public/centres/id/{id})
- modifier un centre (PUT /admin/centres/modifier/{gid})
- supprimer un centre (DELETE /admin/centres/supprimer/{gid})
- gérer les administrateurs (/admin/administrateurs/) :
- récupérer les professionnels en attente d'affectation (GET /admin/professionnels)
- créer un administrateur (POST /admin/administrateurs/nouveau)
- afficher les administrateurs (GET /admin/administrateurs)
- modifier un administrateur (PUT /admin/administrateurs/modifier/{id})
- supprimer un administrateur (DELETE /admin/administrateurs/supprimer/{id})
Il est lié à un centre.
Il peut :
- gérer les médecins de son centre (admin/medecins/) :
- récupérer les professionnels en attente d'affectation (GET /admin/professionnels)
- créer un médecin (POST /admin/medecins/nouveau)
- afficher les médecins (GET /admin/medecins et GET /admin/medecins/id/{id})
- modifier un médecin (PUT /admin/medecins/modifier/{id})
- supprimer un médecin (DELETE /admin/medecins/supprimer/{id})
- gérer les réservations de son centre (/admin/reservations/) :
- afficher les réservations (GET /admin/reservations et GET /admin/reservations/centre/{date})
- supprimer une réservation (DELETE /admin/reservations/supprimer/{id})
Il est lié à un centre.
Il peut :
- rechercher une personne dans son centre par son nom (GET /admin/personnes/{nom})
- rechercher une personne dans son centre par sa date de réservation (GET /admin/reservations/centre/{date})
- valider la vaccination d'une personne (PUT /admin/personnes/validerVaccination/{id})
mail : [email protected]
mdp : superAdminPassword
- Admin 1 :
mail : [email protected]
mdp : admin1
Appartient au centre numéro 3157 - Admin 2 :
mail : [email protected]
mdp : admin2
Appartient au centre numéro 1072
- Médecin 1 :
mail : [email protected]
mdp : medecin1
Appartient au centre numéro 3157 - Médecin 2 :
mail : [email protected]
mdp : medecin2
Appartient au centre numéro 188
Une réservation est également pré-crée dans le centre numéro 3157. Elle date du 1er février 2023 et est associé à la personne ayant pour nom Public1.
Pour accéder aux métriques, il est nécessaire d'avoir appelé au moins une fois l'endpoint lié.
Elle sert à voir le temps d'enregistrement d'un rendez-vous.
Endpoint : GET /actuator/metrics/rendez-vous.temps.enregistrement
Métrique mise à jour lors de l'appel du endpoint suivant : POST /public/inscription
Elle sert à voir le nombre de rendez-vous pris.
Endpoint : GET /actuator/metrics/rendez-vous.nombre
Métrique incrémentée lors de l'appel du endpoint suivant : POST /public/inscription
Il est possible de lancer notre application (back + front) avec Docker.
Pour cela, il faut aller à la racine du projet (là où se trouve le fichier docker-compose.yml).
Remarque : Docker doit être lancé (état : running).
Ensuite, il est nécessaire d'exécuter la commande suivante : docker-compose up -d --build
.
L'application fonctionne alors dans des conteneurs. Vous pouvez y accéder sur votre navigateur :
- localhost:4200 pour accéder au front
- localhost:8080 pour accéder au back
Angular CLI : 15.0.3
Docker : 20.10.21
Java (jdk) : 17.0.5
Maven : 3.6.3
Node : 18.12.1
npm : 8.19.2
/!\ Ne fonctionne que sur Windows 10 et 11