TourGuide est une application Java Spring Boot permettant aux utilisateurs de planifier leurs voyages en accédant à des attractions touristiques proches et en recevant des offres partenaires. Le système repose sur deux services simulés : gpsUtil (géolocalisation) et RewardCentral (gestion des récompenses).
Cette version intègre des optimisations de performance, des corrections de bugs, une gestion de la montée en charge, ainsi qu'un pipeline d'intégration continue.
- Récupération de la position des utilisateurs
- Recommandation des 5 attractions les plus proches (peu importe la distance)
- Attribution de récompenses via RewardCentral
- Exposition d’une API REST
- Simulation de charge utilisateur jusqu’à 100 000
Java 17
Spring Boot 3.X
JUnit 5
Maven CompletableFuture (programmation asynchrone) GitHub Actions (CI/CD) Postman (tests API REST)
Run :
- mvn install:install-file -Dfile=/libs/gpsUtil.jar -DgroupId=gpsUtil -DartifactId=gpsUtil -Dversion=1.0.0 -Dpackaging=jar
- mvn install:install-file -Dfile=/libs/RewardCentral.jar -DgroupId=rewardCentral -DartifactId=rewardCentral -Dversion=1.0.0 -Dpackaging=jar
- mvn install:install-file -Dfile=/libs/TripPricer.jar -DgroupId=tripPricer -DartifactId=tripPricer -Dversion=1.0.0 -Dpackaging=jar
$ git clone https://github.com/Steephaniie/JavaPathENProject8 $ cd JavaPathENProject8
$ mvn clean install
$ mvn spring-boot:run
L'application est accessible par défaut sur http://localhost:8080
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /getNearbyAttractions | Renvoie les 5 attractions les plus proches |
| GET | /getRewards | Renvoie les récompenses d’un utilisateur |
| GET | /getTripDeals | Donne des suggestions de voyage et offres |
| GET | /getLocations | Retourne la dernière position GPS connue d'un utilisateur |
- Classe
TestPerformancepour évaluer les performances jusqu’à 100 000 utilisateurs - Temps d'exécution :
- gpsUtil : ≤ 15 min (100k utilisateurs)
- RewardCentral : ≤ 20 min (100k utilisateurs)
Le pipeline GitHub Actions est défini dans .github/workflows/maven.yml :
- Compilation Maven
- Exécution des tests
- Génération du jar exécutable
Stéphanie — Développeuse Java Back-End
