143 lines
5.6 KiB
Markdown
143 lines
5.6 KiB
Markdown
# README
|
|
|
|
Airjet contient à la fois une API et une Web App pour la gestion d'un système de management de compagnie aérienne.
|
|
|
|
## Sommaire:
|
|
|
|
- API
|
|
- Endpoints
|
|
- Modules
|
|
- Web App
|
|
- Installation
|
|
- Variables d'environnement
|
|
- Outil d'organisation de projet
|
|
|
|
<br>
|
|
<br>
|
|
|
|
## API
|
|
|
|
L'API est construite en utilisant ExpressJS et MariaDB. Elle a les endpoints suivants:
|
|
|
|
- **/users**: Endpoint pour la gestion des utilisateurs. Permet la création, la modification, la suppression et la récupération des informations sur les utilisateurs.
|
|
- **/pilots**: Endpoint pour la gestion des pilotes. Permet la création, la modification, la suppression et la récupération des informations sur les pilotes.
|
|
- **/airlines**: Endpoint pour la gestion des compagnies aériennes. Permet la création, la modification, la suppression et la récupération des informations sur les compagnies aériennes.
|
|
- **/airplanes**: Endpoint pour la gestion des avions. Permet la création, la modification, la suppression et la récupération des informations sur les avions.
|
|
- **/airports**: Endpoint pour la gestion des aéroports. Permet la création, la modification, la suppression et la récupération des informations sur les aéroports.
|
|
- **/flights**: Endpoint pour la gestion des vols. Permet la création, la modification, la suppression et la récupération des informations sur les vols.
|
|
- **/seats**: Endpoint pour la gestion des sièges. Permet la création, la modification, la suppression et la récupération des informations sur les sièges.
|
|
|
|
<br>
|
|
|
|
L'API utilise également les modules créer specifiquement suivants:
|
|
|
|
- **database**: Gère la connexion à la base de données MariaDB et fournit les méthodes pour la création de pool asynchrone SQL.
|
|
- **fetcher**: Gère les méthodes de requete HTTP.
|
|
- **fileManager**: Gère la gestion des fichiers.
|
|
- **mailHandler**: Gère l'envoi d'e-mails, tels que les confirmations de de création de comptes et de réservation.
|
|
- **permission**: Gère les autorisations d'accès aux différents endpoints.
|
|
- **ratelimit**: Gère la limitation du taux de requêtes.
|
|
- **token**: Gère la génération et la vérification des tokens d'authentification.
|
|
|
|
<br>
|
|
<br>
|
|
|
|
## Web App
|
|
|
|
La Web App contient une page d'accueil qui permet aux utilisateurs de se connecter ou de s'inscrire, ainsi qu'une page de tableau de bord.
|
|
|
|
La Web App utilise l'API pour communiquer avec la base de données et récupérer les informations nécessaires.
|
|
|
|
- **html/**: Contient les fichiers HTML.
|
|
- **scripts/**: Contient les fichiers de script JavaScript.
|
|
- **styles/**: Contient les fichiers de styles CSS.
|
|
- **images/**: Contient les assets images utilisé.
|
|
|
|
<br>
|
|
<br>
|
|
|
|
## Installation
|
|
|
|
Pour installer airjet, suivez les étapes suivantes:
|
|
|
|
1. Installer nodejs >= 18.16.0
|
|
2. Installer les dependencies avec `npm i`
|
|
3. Configurez les variables d'environnement dans un fichier .env à la racine de l'API.
|
|
4. Creer une base de donnees `airjet` et importer le SQL `db.sql` dans votre serveur MariaDB/MySQL.
|
|
5. Exécutez le serveur en utilisant la commande `node index`.
|
|
|
|
Pour le fonctionnement correct des cookies et localStorage il est recommendé d'utiliser un serveur web.
|
|
|
|
Il est aussi necessaire d'adapter les variables api dans `app.js` et `dash.js` pour utiliser l'url sur laquelle le serveur api est accessible.
|
|
|
|
Lors de la création d'un utilisateur il recevera le role id 1, ce role n'as pas de permissions par defaut mais celles-ci peuvent etre ajoutées. Lors de la verification de l'email le role id passe a 2. Le role admin a toutes les permissions il est d'id 6.
|
|
|
|
<br>
|
|
<br>
|
|
|
|
## Variables d'environnement
|
|
|
|
Les variables d'environnement suivantes doivent être configurées dans le fichier `.env`:
|
|
|
|
- **DATABASE_HOST**: L'adresse du serveur MariaDB/MySQL.
|
|
- **DATABASE_NAME**: Nom de la base de données.
|
|
- **DATABASE_USER**: Le nom d'utilisateur pour se connecter à la base de données.
|
|
- **DATABASE_PASSWORD**: Le mot de passe pour se connecter à la base de données.
|
|
- **JWT_SECRET**: Une chaîne de caractères aléatoire utilisée pour signer les tokens JWT (JSON Web Tokens), vous pouvez utilisé `./generate-secret.sh` sur un shell UNIX.
|
|
- **PORT**: Le port sur lequel le serveur doit écouter les connexions entrantes.
|
|
- **SMTP**: L'adresse SMTP du serveur de messagerie électronique à utiliser pour l'envoi de courriels.
|
|
- **MAIL**: L'adresse électronique à partir de laquelle envoyer les courriels.
|
|
- **MAIL_PASS**: Le mot de passe associé à l'adresse électronique pour se connecter au serveur de messagerie.
|
|
|
|
<br>
|
|
<br>
|
|
|
|
## Outils d'organisation de projet
|
|
|
|
- **Mattermost**: <https://mattermost.justw.tf/>
|
|
- **Gitea**: <https://git.justw.tf/>
|
|
- **Discord**: <https://discord.com/>
|
|
|
|
<br>
|
|
<br>
|
|
|
|
## To-do list
|
|
|
|
- [ ] API
|
|
- [ ] Endpoints
|
|
- [x] Users (ajouter/modifier/supprimer)
|
|
- [x] Login
|
|
- [x] Register
|
|
- [x] Verification
|
|
- [x] Change password
|
|
- [x] Pilots (ajouter/modifier/supprimer)
|
|
- [x] Airlines (ajouter/modifier/supprimer)
|
|
- [x] Airplanes (ajouter/modifier/supprimer)
|
|
- [x] Airports (ajouter/modifier/supprimer)
|
|
- [x] Flights (ajouter/modifier/supprimer)
|
|
- [x] Seats (ajouter/modifier/supprimer)
|
|
- [ ] Orders
|
|
- [ ] Roles
|
|
- [x] Modules
|
|
- [x] Database
|
|
- [x] Fetcher
|
|
- [x] FileManager
|
|
- [x] MailHandler
|
|
- [x] Permission
|
|
- [ ] RoleManager
|
|
- [x] RateLimit
|
|
- [x] Token
|
|
- [ ] Webapp
|
|
- [x] Home page
|
|
- [x] Login
|
|
- [x] Register
|
|
- [x] Reset password
|
|
- [ ] dashboard
|
|
- [x] Tiles system
|
|
- [ ] Profile
|
|
- [ ] Notifications
|
|
- [ ] Order
|
|
- [ ] Flight manager
|
|
- [ ] Data manager
|
|
- [ ] Logout
|
|
- [ ] Verification page |