Ce projet basé sur un stack MEAN (MongoDB Express, Angular et NodeJS) permet la mise en place d'un système de covoiturage pour mettre en relation conducteurs et voyageurs. Il permet toutes les fonctionnalités basique que l'on pourrait attendre d'une application comme celle-ci. Ce projet a été développé par Adam SAID et Arnaud Cossu de l'Université de Montpellier pour l'UE HAI806I Architectures avancées du web.
Pour l'utilisez de votre côté merci de vous référer à la partie Installation !
- HAI806I-Carpool-project
- Fonctionnalités
- Installation
- Demo
- Services et composants
- Base de données
- API
- Endpoint
- Test connexion
- Récupérer tous les covoiturages
- Recherche de covoiturages par trajet
- Récupération des infos d'un covoiturage
- Recherche des passagers en attente d'acceptation dans un covoiturage
- Acceptation d'un passager dans un covoiturage
- Rejet d'un passager dans un covoiturage
- Réservation d'un siège
- Suppression d'un covoiturage
- Création d'un covoiturage
- Création de compte
- Connexion
- Récupération des infos du profile
- Modification du profile
- Modification du mot de passe
- Récupération des infos pblique d'un utilisateur
- Récupération des voyages concernant un utilisateur
- Auteurs
- Création de compte et authentification
- Changement d'informations du profile et mot de passe
- Création de covoiturage
- Recherche de covoiturage
- Système de réservation du covoiturage avec acceptation et rejet
Afin d'uilisez ce projet sur votre machine récupérer tout le projet et installer chaque partie une à une en suivant les chapitres suivants. Il vous faut avoir sur votre machine :
- npm
- angular CLI
- node
- mongodb ou Atlas (voir la partie Base de données)
- Récupérer le dossier SERVER présent dans l'archive.
- Assurez-vous que le fichier db.ini est bien un niveau au dessus du dossier SERVER dans votre arborescence.
- Naviguer dans le dossier SERVER
- Installer les dépendances avec :
npm install
- Lancer le serveur avec :
node server.js
- Le serveur doit afficher : "Server listening on port 3000"
- Récupérer le dossier CarPoule présent dans l'archive.
- Naviguer dedans
- Installer les dépendances avec :
npm install
- Lancer le client avec :
ng serve -o
Une installation de MongoDB ou l'utilisation de Atlas est nécessaire pour une utilisation personelle du projet. Les fichiers étant fourni il ne vous reste plus qu'à les importer dans votre base de données avec une table nommée CarPoule et trois tables : carpool, user et pending. En suite, créez un fichier db.ini à la racine du projet avec le nom d'utilisateur et le mot de passe de connexion à la BDD, l'ACCES_TOKEN_SECRET pour le hashage des mot de passes et l'ACCESS_CONTROL_ALLOW_ORIGIN pour déterminer qui peut accéder au serveur. Une API_KEY peut être nécessaire pour calculer les coordonnées des villes si besoin.
Voici la structure du fichier db.ini :
username = user
password = pass
ACCESS_TOKEN_SECRET = 000
ACCESS_CONTROL_ALLOW_ORIGIN = http://localhost:4200
API_KEY = xxxxxx
Pour tester le projet vous pouvez vous créer un compte ou utiliser un compte existant. Cela vous permet en suite de créer un covoiturage. Une fois le trajet créé, vous pouvez trouver tous les covoiturages vous concernants sur la page My Trips (dont vous êtes le conducteur ou un passager). Un conducteur ne peut réserver de places dans son propre covoiturage alors pour tester vous pouvez vous connecter à un autre compte afin de rechercher le covoiturage précédemment créé et faire un réservation. Une fois faite, retourner sur le compte qui a créé le covoiturage et allé sur votre trajet. Vous verrez alors la demande de réservation innitiée par l'autre utilisateur que vous pouvez alors refuser ou accepter.
Mot de passe | |
---|---|
test@carpoule.fr | azert |
Mais vous pouvez vous créer un nouveau compte.
http://localhost:4200/
Page d'accueil avec barre de recherche et barre de navigation
http://localhost:4200/login
Page de connexion au compte perso
http://localhost:4200/register
Page de création d'un nouveau compte
http://localhost:4200/search?{departure}&{arrival}&{date}&{seats}
Page de recherche de covoiturage avec paramètres en GET optionnels. Permet de renvoyer vers des covoiturages en cas de résultats.
http://localhost:4200/profile
Page d'informations du compte connecté permettant également de renvoyer vers les pages de modification du mot de passe et des informations.
http://localhost:4200/profile/edit
Page de modification des informations du compte connecté.
http://localhost:4200/profile/password
Page de modification du mot de passe du compte connecté.
http://localhost:4200/publish
Page de publication d'un nouveau covoiturage.
http://localhost:4200/trips
Page permettant à un utilisateur de voir tous les covoiturages dont il est passager ou conducteur et de le renvoyer vers un covoiturage en particulier.
http://localhost:4200/carpool/:id
Page dynamique d'un covoiturage, récupéré en fonction de l'ID fourni dans l'URL. Permet de voir les détails d'un covoiturage avec en plus le composant de carte. Permet également à un utilisateur (différent du conducteur) de réserver une place et au conducteur de gérer les demandes de réservation.
Vous pouvez retrouver des dump de la base de données dans les fichiers suivants
http://localhost:3000/
GET /
GET /search
Parameter | Type | Description |
---|---|---|
none |
- | - |
GET /search/${departure}/${arrival}&date=${date}&seat=${seat}
Parameter | Type | Description |
---|---|---|
departure |
string |
Ville de France avec majuscule |
arrival |
string |
Ville de France avec majuscule |
arrival |
string |
Ville de France avec majuscule |
date |
Date |
[OPTIONAL] Date de départ format yyyy-mm-dd |
seat |
int |
[OPTIONAL] Nombre de places nécessaires |
GET /carpool/${id}
Parameter | Type | Description |
---|---|---|
id |
string |
Identifiant d'un covoiturage |
GET /pending/${id}
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
id |
string |
Identifiant d'un covoiturage |
POST /pending/accept
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
carpool_id |
string |
Identifiant d'un covoiturage |
passenger_id |
string |
Identifiant d'un passager |
POST /pending/reject
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
carpool_id |
string |
Identifiant d'un covoiturage |
passenger_id |
string |
Identifiant d'un passager |
POST /carpool/${id}/book
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
id |
string |
Identifiant d'un covoiturage |
DELETE /carpool/${id}
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
id |
string |
Identifiant d'un covoiturage |
POST /publish
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
departure |
string |
Ville de France de départ avec majuscule |
arrival |
string |
Ville de France d'arrivé avec majuscule |
date |
Date |
Date format yyyy-mm-dd |
seats |
int |
Nombre de sièges disponibles |
highway |
boolean |
true si utilisation d'autoroutes, false sinon |
price |
float |
Prix du trajet |
description |
string |
Description du trajet |
POST /signup
Parameter | Type | Description |
---|---|---|
email |
string |
Email de l'utilisateur |
password |
string |
Mot de passe |
name |
string |
Nom |
firstname |
string |
Prénom |
birthdate |
Date |
Date de naissance format yyyy-mm-dd |
pref_smoking |
boolean |
true si pas dérangé par la fumée, false sinon |
pref_animals |
boolean |
true si pas dérangé par les animaux, false sinon |
pref_talk |
boolean |
true si pas dérangé pour discuter, false sinon |
phone |
string |
Numéro de téléphone |
POST /login
Parameter | Type | Description |
---|---|---|
email |
string |
|
password |
string |
Mot de passe |
GET /profile
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
POST /profile/edit
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
email |
string |
Email de l'utilisateur |
name |
string |
Nom |
firstname |
string |
Prénom |
birthdate |
Date |
Date de naissance format yyyy-mm-dd |
pref_smoking |
boolean |
true si pas dérangé par la fumée, false sinon |
pref_animals |
boolean |
true si pas dérangé par les animaux, false sinon |
pref_talk |
boolean |
true si pas dérangé pour discuter, false sinon |
phone |
string |
Numéro de téléphone |
brand |
string |
Marque du véhicule |
model |
string |
Modèle du véhicule |
color |
string |
Couleur du véhicule format "#xxxxx" |
registration |
string |
Immatriculation du véhicule |
card_num |
string |
Numéro de la carte de crédit |
card_cvc |
string |
CVC de la carte |
card_exp |
Date |
Date d'expiration de la carte format yyyy-mm-dd |
POST /profile/password
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
password |
string |
Mot de passe actuel |
new_password |
string |
Nouveau mot de passe |
POST /usersimple
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |
ids |
Array of string |
Tableau avec les ids des utilisateurs à récupérer |
GET /trips
Parameter | Type | Description |
---|---|---|
auth |
cookie |
Cookie d'authentification |