diff --git a/Documentation/Documentation.md b/Documentation/Documentation.md index ef426352eba8f8be7e7e88328193fb0cb9a0181c..9546697d8ee0aeac84e99968c7a06a4d48e3d51c 100644 --- a/Documentation/Documentation.md +++ b/Documentation/Documentation.md @@ -75,11 +75,79 @@ Les catégories ne possèdent pas d'update car nous n'avons pas considéré cett `Login - /API/v1/login` <br> La connexion des utilisateurs ne possède qu'une méthode post de par sa nature. En effet, elle ne peut guère faire plus (car tout ce qui concerne les utilisateurs est dans la route user). Cette route prend dans le body un json type User avec le username et le mot de passe et renvoie le token JWT. -### Problèmes rencontrés +#### Problèmes rencontrés Au début du projet, nous avions décidé de gérer les données sous forme de liste in-memory. Cette méthode nous a causé bien des problèmes et nous avons donc décidé d'utiliser SQLite, ce qui nous a largement simplifié la tâche. Nous n'avons malheureusement que peu géré les erreures de la base de données. Là où elles ne sont pas nécéssairement utile au projet, on en perd en propreté de code et on risque plus les comportements indéterminés. +### Frontend + +Le frontend utilise Angular avec Tailwindcss. + +#### Arborescence + +Notre arborescence de projet est comme suit : + +``` +frontend/src/app +├── admin + └── deletion-confirmation +├── gameroom +├── interceptors +├── login-systems +│ ├── login +│ └── signup +├── question-systems +│ ├── create-answer +│ ├── create-category +│ ├── create-question +│ ├── remove-category +│ ├── update-answer +│ └── update-question +├── services +├── Types +├── user-dropdown +└── user-systems + ├── create-user + └── update-user +``` + +**admin** +Notre composant qui gère la page de gestion du site, réservée aux administrateurs. + +**gameroom** +Composant qui s'occupe de la logique du jeu (cf. Chapitre sur les Sockets) + +**interceptors** +Une espèce de middleman qui va intercepter un appel HTTP. Ici, c'est utilisé pour passer automatiquement le token JWT à tous les appels HTTP. + +**login-systems** +Pages de login et de création de compte. + +**services** +Nos différents services utilisés par notre projet. Ici, un service d'authentification accessibles à tous, un services lié aux questions et un service lié aux utilisateurs accessibles uniquement par les administrateurs et un service lié aux Sockets. + +**Types** +Simple recueil de types de données. + +**user-dropdown** +Petite modale à fonction décorative. + +**user-systems** +modales de création et mise à jour d'utilisateurs. Celle de création est uniquement accessible par un administrateur, car légèrement différente. + +#### Aspects importants + +Pour permettre un affichage toujours à jour sans avoir à rafraîchir la page entière, nous utilisons les "Behaviors Subjects". Ils sont utilisables en tant qu'observable, afin de permettre le rafraîchissement du composant parent lors d'un changement de valeurs. + +Les modales sont in fine de simples ```<div>``` avec un z-index élevé. + +#### Problèmes rencontrés + +En raison d'un manque de temps, nous n'avons pas implémenté de système de vérification des codes HTTP. Par exemple, si un utilisateur qui cherche à se connecter se trompe de mot de passe, au lieu d'avoir l'information qu'il a rentré de mauvaises informations, il se fait rediriger vers la page principale, sans être connecté. +C'est selon nous un aspect secondaire du projet, et nous avons préféré nous concentrer sur les aspects primaires. + +### Sockets IO Il y a un bug dans notre site que nous n'avons pas réussi à régler, même avec de l'aide. À la fin d'une partie, le tableau des scores s'affiche correctement et est détruit si l'on quitte la page. Cependant, si l'admin revient, l'affichage affichera toujours le dit tableau. \ No newline at end of file