- Prérequis
- Mise en place de la base de données
- Démarrage version production (docker)
- Démarrage version dev (npm + maven)
- Utilisation du programme
Afin de faire fonctionner ce projet, il est nécessaire d'installer Docker sur la machine afin de faire tourner la base de données ainsi que le frontend et le backend en mode production. Pour démarrer le projet en mode développement, il est également nécessaire d'avoir Docker (pour la base de données), ainsi que npm pour le frontend et maven.
Avant de pouvoir utiliser la base de données, il faut télécharger les données nécessaires et les placer dans leur dossier respectif dans database/data.
-
gtfs: Ce sont les données statiques de l'API GTFS d'open transport data. Les données sont disponibles via ce lien. Il faut ensuite dézipper les fichiers.txtdans le dossiergtfs. -
traffics_point: Ces données contiennent des informations sur les arrêts et sont utilisées pour la correspondence entre les noms des arrêts et leur identifiant sloid. Les données sont disponibles via ce lien. Il faut ensuite dézipper le fichier téléchargé et placer son contenu (le fichier.csv) dans le dossiertraffics_point. -
afa_sab: Ces données sont celles d'affectations du personnel de conduite. Il faut placer le fichier.afaet le fichier.sabdans le dossierafa_sab. -
mapinfo: Ce sont les données concernant le parcours et la position des arrêts des différentes lignes de bus. Il, pour chaque ligne, placer les fichiers mapinfo (.DAT,.ID,.MAPet.TAB) pour les arrêts, nomméArrets_xcontenant les infos des arrêt etLigne_xcontenant les infos du parcours et oùxest le numéro de la ligne. Par exemple, pour la ligne 1, il faut les fichiersArrets_1.DAT,Arrets_1.ID,Arrets_1.MAP,Arrets_1.TAB,Ligne_1.DAT,Ligne_1.ID,Ligne_1.MAPetLigne_1.TAB.
Pour obtenir un certificat, il faut passer par un CA (Certificate Authority). Pour un test, il est aussi possible d'en générer un auto-signé. Cela peut se faire avec l'outils openssl et la commande suivante :
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365La configuration de l'application se fait à partir des variables d'environnement. Pour cela, il y a un fichier .env.template qui contient le nom des variables à configurer. Pour l'utiliser, il faut le renommer en .env et ajouter les valeurs suivantes:
- DB_PASSWORD: Mot de passe qui sera utilisé dans la base de donnée
- ENDPOINT_ADDRESS: Adresse à laquelle sera atteignable l'application. Par exemple
http://localhostouhttps://mon.app.ch - GTFS_API_TOKEN: Jeton d'authentification pour l'api GTFS-RT. Disponible à partir du lien suivant.
- PGDATA_VOLUME_PATH: Chemin vers le dossier qui contiendra les données de la base de données. Par exemple
.\data\pgdataou/mnt/volume/pgdata. - SSL_CERTIFICATE: Chemin vers le certificat SSL. Par exemple
/secret/cert.pem. - SSL_CERTIFICATE_KEY: Chemin vers la clé SSL. Par exemple
/secret/key.pem. - SSL_PASSWORD_FILE: Chemin du fichier texte contenant le mot de passe du certificat ssl.
Le fichier contient également quelques autres variables d'environnement qui sont déjà configurées par défaut pour fonctionner avec l'application, mais qui peuvent être modifiées si besoin :
- GTFS_API_URL: URL de l'api GTFS-RT de open transport data. Par défaut
https://api.opentransportdata.swiss/la/gtfs-rt - DB_ADDRESS= Adresse à laquelle est atteignable la base de donnée. Par défaut
db(nom du container du docker compose). - DB_USER: Nom de l'utilisateur dans la base de données. Par défaut
my-user. - DB_NAME: Nom de la base de données. Par défaut
busManagerDB. - DB_PORT: Port utilisé par la base de données. Par défaut
5432. - TL_ID: Identifiant de l'entreprise des transports lausannois. Par défaut
151. - TIMEZONE: Nom du fuseau horaire dans lequel l'application fonctionne. Par défaut
Europe/Paris.
Pour lancer l'application, il suffit de se déplacer dans le dossier qui contient le fichier compose.yml et d'effectuer la commande suivante:
docker compose upLe premier lancement peut prendre plusieurs dizaines de minutes, car docker doit construire les images, puis la base de données doit importer et indexer toutes les données, mais devrait être beaucoup plus rapide les fois d'après.
Avant de lancer la base de données, il faut configurer les variables d'environnement DB_PASSWORD et PGDATA_VOLUME_PATH comme décrit ici. Ensuite, il faut lancer le docker compose, mais avec uniquement la db. Lors du premier lancement, il faut également lancer le container gdal-import qui a pour but de gérer l'import des données.
Premier lancement (ou si script d'import ajouté):
docker compose up db gdal-importLancement ultérieur :
docker compose up dbAvant de lancer le backend, il faut ajouter le jeton de l'api GTFS-RT dans les variables d'environnement du backend pour le profil dev. Comme pour l'application docker, le dossier backend également un fichier .env.template qu'il faut renommer en .env. Toutes les variables sont prédéfinies sauf GTFS_API_TOKEN à laquelle il faut ajouter le jeton de l'api GTFS-RT (comme décrit ici).
Ensuite, il faut que la base de données soit prête à accepter des connexions. Une fois que c'est bon, il est possible de démarrer le backend avec soit l'interface de l'IDE utilisé (si disponible) ou bien la commande suivante :
mvn spring-boot:run --define spring-boot.run.arguments="--spring.profiles.active=dev"
A noter que si vous utilisez l'interface de l'IDE, il faut le configurer pour lancer le projet avec le profile dev. Sinon, le fichier d'environnement .env ne sera pas utilisé et l'application ne fonctionnera pas.
Le backend sera disponible à l'adresse http://localhost:8080
Pour le frontend, l'environnement est déjà configuré et ne nécessite pas d'ajout. Avant la première utilisation, il faut installer les dépendances avec la commande suivante :
npm install
Ensuite, pour démarrer le serveur de développement, il faut utiliser la commande suivante :
npm start
Le frontend sera disponible à l'adresse http://localhost:3000
L'interface graphique est composée de quatre zones:
- Cette zone sert à entrer une ligne de bus, un arrêt et un horaire.
- Cette zone sert à entrer un numéro de matricule.
- Cette zone contient le délai trouvé pour une requête.
- Cette zone affiche la carte et un marqueur bleu représentant la position du bus lors d'une requête.
Afin d'obtenir le retard et la position d'un bus, il faut soit entrer une ligne puis un arrêt puis un horaire (1), soit un numéro de matricule (2). Une fois fait, il faut appuyer sur le bouton Obtenir la position de la zone qui a été remplie. Une fois le bouton appuyé, la zone (3) affiche une icône de chargement pendant que le serveur traite la requête. Enfin, le retard est affiché dans la zone (3) et la position du bus est affichée sur la carte (4).
Pour effectuer une nouvelle requête, il faut entrer un nouveau matricule ou bien réinitialiser la saisie d'arrêt avec le bouton Réinitialiser la sélection et entrer un nouvel arrêt.
