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
API
Endpoints
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.
Modules
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.
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é.
Installation
Pour installer airjet, suivez les étapes suivantes:
- Installer nodejs >= 18.16.0
- Installer les dependencies avec
npm i - Configurez les variables d'environnement dans un fichier .env à la racine de l'API.
- Creer une base de donnees
airjetet importer le SQLdb.sqldans votre serveur MariaDB/MySQL. - 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.
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.shsur 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.
Outils d'organisation de projet
- Mattermost: https://mattermost.justw.tf/
- Gitea: https://git.justw.tf/
- Discord: https://discord.com/
To-do list
- API
- Endpoints
- Users (ajouter/modifier/supprimer)
- Login
- Register
- Verification
- Change password
- Pilots (ajouter/modifier/supprimer)
- Airlines (ajouter/modifier/supprimer)
- Airplanes (ajouter/modifier/supprimer)
- Airports (ajouter/modifier/supprimer)
- Flights (ajouter/modifier/supprimer)
- Seats (ajouter/modifier/supprimer)
- Orders
- Roles
- Users (ajouter/modifier/supprimer)
- Modules
- Database
- Fetcher
- FileManager
- MailHandler
- Permission
- RoleManager
- RateLimit
- Token
- Endpoints
- Webapp
- Home page
- Login
- Register
- Reset password
- dashboard
- Tiles system
- Profile
- Notifications
- Order
- Flight manager
- Data manager
- Logout
- Verification page
- Home page