CAW1 2019 Projet de Tristan JULIEN et Guillaume GRAVALLON : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Tableau d'API)
Ligne 87 : Ligne 87 :
  
 
{| class="wikitable alternance center"
 
{| class="wikitable alternance center"
  |+ Tableau récapitulatif
+
  |+ API
 
  |-
 
  |-
 
  | scope="col" | Routes
 
  | scope="col" | Routes
Ligne 95 : Ligne 95 :
 
  ! scope="col" | DELETE
 
  ! scope="col" | DELETE
 
  |-
 
  |-
  ! scope="row" | /users
+
  ! scope="row" | /annonce
  | <span style='color:red;'>'''admin only'''</span><br>Renvoi la liste des utilisateurs<br>CR 200
+
  | Renvoi la liste des annonces.<br>CR 200 ou 500
  | <span style='color:red;'>'''admin only'''</span><br>Ajoute un utilisateur<br>CR 201
+
  | -
 
  | -
 
  | -
 
  | -
 
  | -
 
  |-
 
  |-
  ! scope="row" | /users/<ID>
+
  ! scope="row" | /annonce/user/:email>
  | <span style='color:red;'>'''admin only'''</span><br>Renvoi les informations de l'utilisateur <ID> s'il existe<br>CR 200 ou 404
+
  | Renvoi les annonces de l'utilisateur à l'email :email.<br>CR 200 ou 500
 +
| -
 +
| -
 
  | -
 
  | -
| <span style='color:red;'>'''admin only'''</span><br>Modifie l'utilisateur <ID> s'il existe<br>CR 200 ou 404
 
| <span style='color:red;'>'''admin only'''</span><br>Supprime l'utilisateur <ID> s'il existe<br> CR 204 ou 404
 
 
  |-
 
  |-
  ! scope="row" | /recipes
+
  ! scope="row" | /annonce/:id
  | Renvoi la liste des recettes<br>CR 200
+
  | Renvoi l'annonce d'id :id.<br>CR 200 ou 500
| <span style='color:red;'>'''logged user only'''</span><br>CR 201
+
 
  | -
 
  | -
 
  | -
 
  | -
 +
| <span style='color:red;'>'''Connecté et propriétaire de l'annonce'''</span><br>Supprimme l'annonce d'id :id.<br>CR 204 ou 401 ou 500
 
  |-
 
  |-
  ! scope="row" | /recipes/<ID>
+
  ! scope="row" | /login
  | Renvoi les informations de la recette <ID> si elle existe<br>CR 200 ou 404
+
  | -
 +
|  Connecte l'utilisateur et renvoi son token.<br>CR 200 ou 401 ou 404
 +
| -
 +
| -
 +
! scope="row" | /register
 +
| -
 +
|  Enregistre et connecte l'utilisateur et renvoi son token.<br>CR 200
 +
| -
 
  | -
 
  | -
| <span style='color:red;'>'''admin or author only'''</span><br>Modifie la recette <ID> si elle existe<br>CR 200 ou 404
 
| <span style='color:red;'>'''admin or author only'''</span><br>Supprime la recette <ID> si elle existe<br> CR 204 ou 404
 
 
  |}
 
  |}
 
  
 
= Démonstration =  
 
= Démonstration =  

Version du 28 mai 2019 à 22:18

Lebonpiston.png
Titre du projet LeBonPiston
Cadre Projet Web 2AA 2019
Page principale CAW1_Demonstration_Realisation

Équipe Tristan JULIEN, Guillaume GRAVALLON
Encadrants Sébastien Viardot


LeBonPiston est un site de publication d'annonces entre particuliers spécialisé dans la vente de motos. Les utilisateurs peuvent y déposer des annonces de vente pour leurs motos, en précisant de nombreux critères spécifiques à ce domaine que les autres sites ne proposent pas.

Elle a été developpée dans le cadre d'un projet de développement d'application web en deuxième année d'apprentissage à l'ENSIMAG, par Tristan JULIEN et Guillaume GRAVALLON.

Présentation du projet

Description

Lebonpiston.png

LeBonPiston est un site de vente en ligne entre particuliers spécialisé dans la vente de motos. Les utilisateurs enregistrés peuvent y déposer des annonces de vente pour leurs motos avec de nombreux critères spécifiques à ce domaine que les autres sites ne proposent pas. Les annonces sont visibles sous forme de liste, que l'on peut filtrer en fonction de critères tels que la marque, le modèle, ou de nombreux autres critères spécifiques à la moto qui font notre force. Un utilisateur enregistré peut supprimer son annonce quand il le souhaite ainsi qu'accéder à son profil où il retrouvera toutes ses annonces.

Toute ressemblance avec des applications existantes ou ayant existé ne saurait être que fortuite.

Cahier des charges

  • Gestion de la création / connexion de comptes.
  • Gestion d'un rôle d'utilisateur et d'un rôle d'administrateur.
  • Un utilisateur a accès à toutes les fonctionnalités CRUD pour son annonce.
  • Un utilisateur peut accéder aux différentes annonces.
  • Un utilisateur peut filtrer les annonces selon différents critères.
  • Un administrateur peut consulter les annonces en attente de validation.
  • Un administrateur peut valider une annonce.
  • Design responsive.
  • Tests unitaires.
  • Tests e2e.
  • Doc.

Spécifications techniques

Cas d'utilisation

Visiteur:

  • Voir la page des annonces.
  • Filtrer les annonces selon différents critères.
  • Voir le détail d'une annonce.
  • Créer un compte.
  • Se connecter.


Utilisateur:

  • Voir la page des annonces.
  • Filtrer les annonces selon différents critères.
  • Voir le détail d'une annonce.
  • Se déconnecter.
  • Voir son compte.
  • Supprimer son compte.
  • Modifier son compte.
  • Poster une annonce.
  • Voir ses propres annonces.
  • Modifier ses propres annonces.
  • Supprimer ses propres annonces.


Administrateur:

  • Voir la page des annonces.
  • Filtrer les annonces selon différents critères.
  • Voir le détail d'une annonce.
  • Se déconnecter.
  • Voir son compte.
  • Supprimer son compte.
  • Modifier son compte.
  • Voir les annonces en attente de validation.
  • Valider une annonce.
  • Refuser une annonce.

Choix techniques

Modèle de données

Webservice

Gestion des rôles

Architecture

Tableau d'API

API
Routes GET POST PUT DELETE
/annonce Renvoi la liste des annonces.
CR 200 ou 500
- - -
/annonce/user/:email> Renvoi les annonces de l'utilisateur à l'email :email.
CR 200 ou 500
- - -
/annonce/:id Renvoi l'annonce d'id :id.
CR 200 ou 500
- - Connecté et propriétaire de l'annonce
Supprimme l'annonce d'id :id.
CR 204 ou 401 ou 500
/login - Connecte l'utilisateur et renvoi son token.
CR 200 ou 401 ou 404
- - /register - Enregistre et connecte l'utilisateur et renvoi son token.
CR 200
- -

Démonstration

Une vidéo de démonstration de l'application est disponible en cliquant sur ce lien.

On y présente les fonctionnalités élémentaires de l'application LeBonPiston : afficher les annonces existantes, les filtrer selon différents critères, créer un compte, accéder à son profil, déposer une annonce, supprimer son annonce...

Video.PNG

Installation

Outils nécessaires

  • Git
  • NodeJS
  • Angular-CLI
  • MongoDB

Initialisation

  • Récupérer le projet avec
    git clone https://gitlab.ensimag.fr/gravallg/lebonpiston.git
  • Se placer dans la racine du projet et lancer
    npm install
    Puis dans le dossier /server lancer également
    npm install
  • Après avoir démarré mongoDB, se placer dans le dossier "/demo" et lancer
    mongorestore --db lebonpiston /lebonpiston
  • Dans le dossier /server lancer
    nodemon server.js
  • A la racine, lancer
    ng serve
  • Le site est accessible à l'adresse "localhost:4200"

Rendu

Ce qui est demandé

  • Utilisation de framework → NodeJS/Express.
  • Gestion des rôles → Oui, un visiteur ne peut pas poster d'annonce, un utilisateur peut poster une annonce et supprimer uniquement les siennes.
  • Site adapté aux différents terminaux → Oui avec Bootstrap.
  • Tests unitaires → Oui, mis en place et un premier fichier de tests.
  • Tests fonctionnels → Oui, mis en place et un premier fichier de tests.
  • WebService externe côté serveur → Non.
  • Optionnel: API REST → Oui.
  • Optionnel: Client Angular ou vue.js → Oui, Angular.
  • Outil: Depot GitLab → Oui.
  • Outil: Integration continue → Oui, lance uniquement les tests unitaires à cause de problèmes de drivers.

Ce qu'il resterait à faire