TP4 - Raidite (25%)

📥 Remise
- 📍 Où : sur Git uniquement (N'oubliez pas l'invitation https://github.com/MaximePelletier15)
- ⏰ Quand : 15 mai à 23h59.
- ⛔ Attention, il y a une remise partielle à présenter avant le 4 mai à 17h59 pour la partie C.
📝 Consignes
- 👥 Le TP est fait en équipe de deux imposée.
- 📦 Le projet client utilise le framework Next.js et le projet serveur utilise le framework ASP.NET Core. (Projets de départ fournis)
- 👽 Attention au plagiat. Il est interdit de copier en partie ou complètement le code d'une autre personne ou de générer son code avec l'IA. Le niveau d'usage de l'intelligence artificielle générative permis pour ce TP est de 1. (Se référer au plan de cours)
- 🖥 Il faudra respecter la structure existante dans les deux projets.
Pendant le TP, ne vous cassez jamais la tête à régler les conflits de merge pour les migrations. Faites simplement une nouvelle migration dans chaque nouvelle branche.
Si votre travail est suspecté de plagiat (code copié d'un(e) autre étudiant(e), code généré par IA, notions non abordées en classe, etc.), deux choses peuvent se produire :
- Le plagiat est prouvé par nos outils : Note de 0, automatiquement.
- Le plagiat est plutôt évident, mais une validation est requise : vous serez convoqué(e) au bureau de votre enseignant(e). Vous devrez répondre à certaines questions pour prouver que vous comprenez et maîtrisez le code qui a été utilisé dans votre TP. Si vous ne réussissez pas à répondre à certaines questions, vous aurez la note de 0. (Si vous ne comprenez pas votre propre code, c'est que vous avez plagié, d'une manière ou d'une autre.)
Ce TP sera probablement plus long et sophistiqué que les autres TPs que vous avez faits jusqu'à maintenant dans le programme. Voyez cela comme un rite de passage, sachant que le cours 5W5 - Programmation Web avancée est largement plus difficile que ce cours. Malgré tout, les 6 séances de 3 heures consacrées au TP4 sont censées être suffisantes pour ceux qui ont fait tous leurs laboratoires.
📦 Projets de départ
Les projets Next.js + ASP.NET Core sont fournis pour ce TP.
Une application qui sert de multi-forums de discussion vous est fournie. Vous devrez ajouter des fonctionnalités à l'application, principalement pour la gestion d'images et de rôles.
En résumé, l'application contient des hubs (forums), des posts (publications) et des commentaires.
- Un
hubcontient despostssur un thème commun et unpostcontient descommentaires. - On peut répondre à un
commentaireavec des sous-commentairesà l'infini.
Ci-dessous, on peut voir une publication (post) avec plusieurs commentaires. La publication a été créée dans le forum (hub) nommé « conspirations ».

📜 Résumé des fonctionnalités
👥 Chaque équipe aura un membre hot-doye 🌭 et un membre sushi 🍣. Vous serez évalués séparément pour la plupart des fonctionnalités. Vous êtes obligés d'implémenter seulement vos propres fonctionnalités, telles que listées ci-dessous.
🔍 Ceci n'est qu'un résumé des fonctionnalités, vérifiez les énoncés par membre pour avoir tous les détails et indices. La quantité de travail est très similaire, sauf que 🌭 aura un peu plus de travail lors de F-G-H et 🍣 aura un peu plus de travail lors de C-D-E.
| Membre 🌭 | Membre 🍣 |
|---|---|
Étape A-🌭🍣 | |
Étape B-🌭🍣
| |
Étape C-🌭 | Étape C-🍣 |
🛑 HALTE !
| |
Étape D-🌭 | Étape D-🍣 |
Étape E-🌭 | Étape E-🍣 |
Étape F-🌭 | Étape F-🍣 |
Étape G-🌭 | Étape G-🍣 |
Étape H-🌭 | Étape H-🍣 |
Étape I-🌭🍣 | |
✅ Grille de correction
Bien entendu, il y a plus de détails sur les fonctionnalités demandées dans les énoncés du TP.
Membre 🌭 (32 pts)
| Critère | Points |
|---|---|
| On peut ajouter des images lorsqu’on crée un commentaire et les voir ensuite. | 10 pts |
| Les utilisateurs peuvent choisir un avatar (et le prévisualiser) et le modifier à volonté. | 4 pts |
| Toute image (sauf les avatars) peut être cliquée pour être affichée en grand dans un nouvel onglet. | 2 pts |
| Les images des posts et des commentaires peuvent être supprimées individuellement par l’auteur. | 6 pts |
| Les posts / commentaires des autres utilisateurs peuvent être signalés si on est connecté. | 4 pts |
| Le rôle de modérateur existe, permet de supprimer des commentaires signalés et présente un utilisateur avec le rôle dans le seed. | 6 pts |
Membre 🍣 (32 pts)
| Critère | Points |
|---|---|
| On peut ajouter des images lorsqu’on crée un post et les voir ensuite. | 11 pts |
| On peut choisir une icône lorsqu'on crée un forum. | 4 pts |
| La première image d'une publication est affichée dans son aperçu. | 1 pt |
| La sauvegarde de publications est fonctionnelle. | 6 pts |
| Supprimer un post ou un commentaire supprime ses images. | 2 pts |
| La connexion fonctionne avec le nom d’utilisateur et le courriel. | 1 pt |
| On peut modifier son mot de passe à volonté. | 2 pts |
| Le rôle d’administrateur existe, permet de nommer des modérateurs et présente un utilisateur avec le rôle dans le seed. | 5 pts |
Commun 👥 (18 pts)
| Critère | Points |
|---|---|
| L’architecture du projet serveur respecte les lignes directrices vues dans les notes de cours. (Les contrôleurs n’ont pas accès au DbContext, usage de Models et de DTOs au besoin, etc.) De plus, sur le serveur, évitez la répétition de code dans la mesure du raisonnable. | 2 pts |
Git a été utilisé de manière appropriée, c’est-à-dire :
|
|
☢ Pénalités variées possibles :
|
|
📶 Liste des requêtes pour référence
- ✅ Déjà complétée et n'aura jamais à être modifiée.
- 📝 Fonctionne déjà mais devra être modifiée pour ajouter des fonctionnalités.
- 🥚 Devra être créée à partir de zéro.

🔍 Organisation du projet Next.js
Vous n'aurez aucun composant à créer pendant le TP4, à priori. Cependant il faudra s'y retrouver parmi tous les composants existants.
🗺 Composants chargés par routage
La plupart des noms de ces composants parlent d'eux-mêmes.
FullPostsert à afficher une publication en entier, avec ses commentaires.FullHubpermet d'afficher un aperçu de toutes les publications d'un forum.Homeaffiche des aperçus de publications qui viennent généralement de plusieurs forums.

♻ Composants réutilisables

- AccountMenu
- CommentStats
- OrangeButton
- SearchBar
- CommentBox
- LeftBar
- PostThumbnail
- Reply
Petit menu déroulant en haut à droite de la page qui propose des options différentes lorsque nous sommes connectés. Il est intégré dans le HomeLayout.

Affichage des votes et du nombre de commentaires. Permet d'upvoter et de downvoter le commentaire principal d'une publication. Ce composant est intégré dans les composants FullPost et PostThumbnail. Ce composant n'est pas utilisé par le composant CommentBox, qui gère son propre affichage des votes.

Simple bouton orange utilisé à 6 endroits dans le site Web.
Barre de recherchée intégrée dans le HomeLayout.
Composant qui permet d'afficher un commentaire, ses votes et ses sous-commentaires. Ce composant est intégré dans FullPost et dans lui-même ! (Chaque sous-commentaire est une autre instance de CommentBox)

Menu de gauche intégré dans le HomeLayout.

Composant intégré répétitivement dans FullHub et dans Home pour afficher l'aperçu de plusieurs publications.
Composant intégré dans FullPost et dans CommentBox. Permet autant de créer un commentaire qu'un sous-commentaire.
