README.md 4.44 KB
Newer Older
jeremy.gobet's avatar
jeremy.gobet committed
1
2
# Travail Pratique

3
**Ceci est le projet exemple** pour la réalisation du travail pratique (TP) et le dépôt Git de référence pour les étudiants. Il sera complété au fur et à mesure des notions enseignées pendant le cours.
jeremy.gobet's avatar
jeremy.gobet committed
4
5
6

## Informations pour les étudiants

jeremy.gobet's avatar
jeremy.gobet committed
7
**Le fork de ce repository doit contenir votre projet pour les cours qui sera évalué sur la partie frontend pour le cours Applications Web et la partie backend pour le cours Architectures Web. Pour la marche à suivre, veuillez vour référer au document nommé STUDENTS.md**
jeremy.gobet's avatar
jeremy.gobet committed
8

jeremy.gobet's avatar
jeremy.gobet committed
9
Les critères d'évaluation sont explicités ici: https://gitedu.hesge.ch/jeremy.gobet/app-et-archi-web
10

jeremy.gobet's avatar
jeremy.gobet committed
11
La suite contient la documentation du projet exemple que vous devez adapter et compléter pour le vôtre.
jeremy.gobet's avatar
jeremy.gobet committed
12
13
14
15
16

---

## Description du projet

17
Ce projet est une application Web permettant à l'utilisateur de consulter les blagues de Chuck Norris, de voter pour ses blagues préférées et de consulter les blagues les plus appréciées par la communauté.
jeremy.gobet's avatar
jeremy.gobet committed
18
19
20

### Réccupérer le projet

21
22
23
Le projet est disponible sur l'hébergement Git (gitedu.hesge.ch).

Cloner le projet localement avec la commande git suivante:
jeremy.gobet's avatar
jeremy.gobet committed
24
25
26
27
28

`git clone ssh://git@ssh.hesge.ch:10572/jeremy.gobet/app-et-archi-web-tp-2020.git`

### Structure

jeremy.gobet's avatar
jeremy.gobet committed
29
Le projet contient deux dossiers:
jeremy.gobet's avatar
jeremy.gobet committed
30
31

- **frontend**: Contient le site public
32
- **backend**: Contient le serveur Node
jeremy.gobet's avatar
jeremy.gobet committed
33
34
35

### Démarrer le serveur

jeremy.gobet's avatar
jeremy.gobet committed
36
La partie publique est servie par le serveur sur Node. Vous devez avoir Node installé sur votre machine pour démarrer cette application Web.
jeremy.gobet's avatar
jeremy.gobet committed
37
38
39
40
41
42
43
44
45

Accédez au dossier contenant le serveur Node

`cd backend/`

Installez les dépendances

`npm install`

jeremy.gobet's avatar
jeremy.gobet committed
46
Démarrez le serveur Node
jeremy.gobet's avatar
jeremy.gobet committed
47
48
49

`node server.js`

jeremy.gobet's avatar
jeremy.gobet committed
50
Vous pouvez ensuite visualiser le site en local sur un navigateur: **localhost:8080**
jeremy.gobet's avatar
jeremy.gobet committed
51

jeremy.gobet's avatar
jeremy.gobet committed
52
53
54
55
### Stopper le server

Pour stopper le serveur Node, utilisez la commande **CTRL + C**

jeremy.gobet's avatar
jeremy.gobet committed
56
57
### Architecture du projet

jeremy.gobet's avatar
jeremy.gobet committed
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
            +------------+
            |            |
            |            |
         +--+  Frontend  +--+
         |  |            |  |
         |  |            |  |
         |  +------------+  |
         |                  |
         |                  |
         |                  |
         |                  |
         v                  v
  +-------------+    +-------------+
  |     API     |    |     API     |
  +-------------+    +-------------+
  |             |    |             |
  |   Backend   |    |    ICNDB    |
  |   NODE.JS   |    |  API public |
  |             |    |             |
  +-------------+    +-------------+
jeremy.gobet's avatar
jeremy.gobet committed
78
79
80

- Frontend: Projet HTML5, CSS3, JS
- Backend: Exposition d'une API REST sur NODE.JS pour la gestion des notations
jeremy.gobet's avatar
jeremy.gobet committed
81
- ICNDB: API Rest public pour réccupérer les blagues de Chuck Norris (https://api.icndb.com)
jeremy.gobet's avatar
jeremy.gobet committed
82
83
84
85
86

### Fonctionnalités

Voici la liste des fonctionnalités de l'Application Web:

jeremy.gobet's avatar
jeremy.gobet committed
87
- Récupération des blagues sur l'API public (non-implémenté)
jeremy.gobet's avatar
jeremy.gobet committed
88
- Récupération des dernières blagues publiées (non-implémenté)
jeremy.gobet's avatar
jeremy.gobet committed
89
90
91
- Gestion de la notation de blagues (non-implémenté)
- Récupération des blagues les mieux notées par les utilisateurs (non-implémenté)
- Récupération des blagues notées par un utilisateur (non-implémenté)
jeremy.gobet's avatar
jeremy.gobet committed
92

93
L'application ne dispose pas d'une persistance de données. Une fois le serveur stoppé, toutes les données sont perdues.
jeremy.gobet's avatar
jeremy.gobet committed
94

95
Une authentification sans mot de passe permet l'identification de l'utilisateur via l'utilisation de son adresse e-mail.
jeremy.gobet's avatar
jeremy.gobet committed
96

jeremy.gobet's avatar
jeremy.gobet committed
97
98
99
100
### Interface REST API

Voici l'API REST CRUD exposée par le backend

jeremy.gobet's avatar
jeremy.gobet committed
101
| Verbe HTTP | Endpoint                 | Données     | Description |
jeremy.gobet's avatar
jeremy.gobet committed
102
103
104
105
106
107
108
109
110
111
|:-----------|:-------------------------|:------------|:------------|
| GET        | emails/                  |             | Retourne la liste des mails des utilisateurs |
| GET        | evaluated-jokes/         |             | Retourne les blagues les mieux notées |
| GET        | evaluated-jokes/*:email* | email*      | Retourne les blagues notées par l'utilisateur |
| POST       | evaluated-jokes/         | email*, id* | Ajout d'une nouvelle note à la blague (id) |
| PUT        | evaluated-jokes/         | email*, id* | Modification de la note de la blague (id) |
| DELETE     | evaluated-jokes/         | email*, id* | Suppression de la note de la blague (id) |

\* Obligatoire

jeremy.gobet's avatar
jeremy.gobet committed
112
113
### Contact

114
115
116
#### Assistant

- Identifiant: @michael.minelli
117
- Mail: michael-jean.minelli@hesge.ch
118
119
120
121
122
123
124
125
126
127

#### Applications Web

- Identifiant: @jeremy.gobet
- Mail: jeremy.gobet@hesge.ch

#### Architectures Web

- Identifiant: @stephane.malandai
- Mail: stephane.malandain@hesge.ch