Une application permettant de gerer des chambres...
Documentation
Cette application a été réalisée dans le cadre de mon stage de fin d'année en seconde année de DUT MMI à l'IUT de Tarbes. J'avais pour devoir de réaliser une application de gestion de ressources pour l'Observatoire Midi-Pyrénées du Pic Du Midi de Bigorre (https://www.omp.eu/)
Elle devait en autre permettre de :
- Gerer les capacités d'accueil du Pic en permettant de :
- Reserver des chambres
- Affecter des missionnaires à leur chambres respectives
- Permettre de visualiser quelles chambres doivent etres entretenues ou pas.
- Gerer les salles de reunions
- Gerer les laisser passer
- Permettre de générer des rapports financiers sur l'utilisation des chambres
L'idée était de faciliter le travail de gestion pour le personel qui gère l'organisation du pic.
L'application utilise ces differentes librairies et frameworks pour fonctionner :
Cette application a été réalisée pour etre utilisée sur Debian 10.4, en revanche toute distribution fait affaire tant que Node.js et MongoDB sont installés.
La machine doit avoir au minimum :
- CPU : 2 cores minimum, 4 ou + recommendé
- RAM : 2Go minimum, 4Goou+recommendé
- Disque : 20Go minimum, 100Go ou + recommendé
Et le port 8080 doit etre accessible.
L'application a besoin de trois paquets pour fonctionner : Git, MongoDB et Nodejs.
- git
sudo apt install git
- NodeJS (latest)
sudo apt install nodejs
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod
- Cloner le repo et entrer dans le repertoire de celui ci
git clone https://github.com/AkaiiKitsune/OMP-GestionPic && cd ./OMP-GestionPic
- Installer les packets NPM
npm install
- Ajouter la clé d'api dans /config/secrets.js (La clé est a générer sur https://api.insee.fr/catalogue/, dans la rubrique API Sirene V3)
module.exports={secretSirenAPI:'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'};
- Demarrer l'application (Le serveur devient alors disponible sur le port 8080 de la machine)
npm run start
Un serveur nodemon demarre, il relancera l'application si des modifications sont effectuées a son code source ou si un crash a lieu.
Il faut avant toute chose creer le compte administrateur et lui donner ses droits. La modification de droits utilisateurs demande un acces au terminal de la base de donnée MongoDB, et c'est la seule operation demandant a un acces direct a celle ci.
Il faut proceder de la sorte :
-
Creer le compte administrateur sur l'interface web (en le nommant admin en minuscules, c'est important pour la commande qui va suivre)
-
Acceder au terminal MongoDB :
mongo mongodb://localhost:27017/omp
- Executer la commande suivante :
db.users.findAndModify({ query: { username: "admin" }, update: { $set: { admin: "true"} } })
Elle permet de mettre a jour le profil administrateur afin de lui donner ses droits. On peux maintenant quiter la console mongo en executant la commande exit
L'administrateur a maintenant acces au panel admin (Situé dans le menu dropdown).
Il va devoir maintenant ajouter differents emplacements a la base de donnée :
Ces emplacements seront ensuite selectionnables dans les interfaces de creation de mission et d'attribution des chambres.
Lorsque celle-cies sont ajoutées, la configuration de base peut etre considérée terminée, et l'utilisateur admin n'est plus important pour l'instant.
Après avoir crée un compte utilisateur, l'interface va demander de specifier les informations du missionnaire lié a ce compte.
Il suffit de remplir les informations demandées :
Une fois le compte crée, le profil de l'utilisateur ressemblera à ceci :
L'utilisateur a ici la possibilité de visionner les missions qu'il a planifié, et d'en ajouter de nouvelles :
Les missions ajoutées s'affichent ensuite dans le profil de l'utilisateur :
L'Administrateur a la possibilité de definir une chambre pour les missions :
Les missions dont les chambres ont étés attribuées sont affichées en vert dans la liste des missions.
Bien que je n'ai pas su implementer tout ce que le cahier des charges me demandais d'integrer, je suis vraiment heureux d'avoir reussi à realiser le "peu" present sur le projet, car il a fallu que j'utilise des technologies que je n'avais jamais utilisé jusqu'a present.
Ce projet m'as permis de découvrir de nouvelles façons de developper pour le web, notemment avec l'utilisation d'API REST.
Malheuresement, le retard pris sur le developpement a été monstrueux. En effet, utiliser MongoDB d'un point de vue technique était justifié et plus logique qu'une base SQL standard, mais son principe de fonctionnement est fondamentalement different que celui d'une base de données SQL, et j'ai simplement pris trop de temps pour m'y habituer. D'autre part, certains aspects de mon architecture sont fondamentalement mauvais, notamment le besoin de parser des données depuis les page web, alors que j'aurai pu simplement les stoquers temporairement dans un tableau a l'aide d'un script jquery...