Pour lancer l'application, exécuter la commande ci-dessous à la racine du projet
docker-compose up back_dev front_dev
L'application peut nécessiter plusieurs secondes à 1 minute lors de son lancement. Ce délai est dû à la population automatique de la base de données (depuis la liste des villes sur le site data.gouv)
Une fois l'application lancée, vous pouvez y accéder à l'adresse http://localhost:3008
Le répertoire back
contient un projet NestJS
qui délivre une API REST contenant 2 endpoints.
Elle utilise une base de données PostgreSQL pour stocker la liste des villes localement. La librairie TypeORM
est utilisée pour la communication avec cette base.
La librairie axios
est utilisée pour contacter des services extérieurs. Ici, elle est utilisée pour récupérer la liste des villes sur le site data.gouv.
Lors du lancement de l'application via la commande docker-compose
proposée plus haut, la base de donnée est automatiquement créée. La liste des villes est automatiquement téléchargée depuis le site data.gouv.
Ce comportement est développé grâce à la fonction de gestion des migrations de TypeORM
(pour la création automatique des tables en base de données).
Un script, présent dans le fichier back/src/scripts/sync-cities.ts
permet, en exécutant la commande npm run sync
, de télécharger automatiquement les villes sur le site data.gouv et de les insérer en base de données.
Par défaut, cette API est accessible depuis l'adresse http://localhost:3007/
. Le numéro de port peut être modifié directement dans le fichier docker-compose.yml
à la racine du projet (service back_dev
).
La racine de cette API retourne une erreur 404. Seuls les endpoints décrits ci-dessous délivrent une réponse.
Créé à des fins de test, le endpoint http://localhost:3007/city
retourne la liste des 10 premières villes en base de données.
Endpoint utilisé par le front pour rechercher les villes en fonction du paramètre searchTerm
.
Il retourne la liste des 100 premières villes correspondant au terme recherché.
Le port sur lequel écoute le serveur NestJS.
préconfiguration : 3007
URL du fichier/endpoint JSON sur lequel récupérer les villes à insérer en base de données.
Préconfiguration : https://www.data.gouv.fr/fr/datasets/r/34d4364c-22eb-4ac0-b179-7a1845ac033a
Nom d'utilisateur à utiliser pour se connecter à la base de données
Préconfiguration : postgres
Mot de passe à utiliser pour se connecter à la base de données
Préconfiguration : postgres
Nom de la base de données à laquelle se connecter
Préconfiguration : postgres
Nom d'hôte du serveur de base de données auquel se connecter
Préconfiguration : database_dev
Port du serveur de base de données auquel se connecter
Préconfiguration : 5432
Le front est réalisé avec ReactJS
(version 18). La librairie redux-toolkit
est utilisée pour émettre les requêtes vers le back et stocker les résultats en cache.
Par défaut, le front est accessible à l'adresse http://localhost:3008 si l'application est lancée avec docker-compose. Le numéro de port peut être modifié dans le fichier docker-compose.yml
sur le service front_dev
Pour lancer les tests automatisés du back, lancer la commande ci-dessous
docker-compose up back_test
Seul le back dispose de tests unitaires dans cette version.
Pour simplifier le déploiement et la maintenance de l'application, un worflow CI a été mis en place via github action
.
Ces workflow se terminant par le build d'images Docker, ils peuvent facilement être complétés pour y inclure une dimension CD en ajoutant des étapes de déploiement vers le service de notre choix à la suite des étapes CI.
Fabien LEGE Responsable du pôle web & mobiles au sein de l'Agence ho5 depuis 2012.
- fabienlege@gmail.com
- 06.72.37.45.22