Instructions générales

Tests préliminaires

  • Toutes les informations sensibles comme les identifiants, clés API et variables d'environnement doivent être définies dans un fichier .env pendant l'évaluation. Si ces informations sont présentes dans le dépôt Git en dehors du fichier .env créé durant l'évaluation, l'évaluation s'arrête et la note est de 0.
  • Assurez-vous que le fichier docker-compose.yml est à la racine du dépôt.
  • Exécutez la commande docker-compose up --build.
  • Comme la notation de ce projet est plus flexible, ne stoppez pas le processus d'évaluation sauf en cas d'erreur 500, de crash ou de tout autre dysfonctionnement majeur dans le cadre du projet.

Backend

  • Le backend doit être développé en utilisant le framework NestJS.
  • La base de données doit être une base PostgreSQL.
  • Durant tout le processus d'évaluation, aucun avertissement ou erreur non géré ne doit apparaître.

Frontend

  • Le frontend doit être réalisé en utilisant un framework TypeScript.
  • Toute bibliothèque TypeScript/JavaScript est autorisée.
  • Pendant tout le processus d'évaluation, aucun avertissement ou erreur non géré ne doit apparaître.

Vérifications de base

  • Le site web est accessible à l'adresse choisie par les étudiants.
  • L'utilisateur peut se connecter en utilisant la fonctionnalité OAuth de l'intranet 42.
  • Lors de la première connexion, l'utilisateur est invité à ajouter des informations à son compte (nom d'affichage/pseudo, avatar, etc.).
  • Si l'utilisateur n'est pas connecté, il n'a accès qu'à très peu ou aucune information et est invité à se connecter.
  • Le site web est une application monopage (SPA). L'utilisateur peut utiliser les boutons "Précédent" et "Suivant" de son navigateur web.
  • Le site web est navigable sans problème ni erreur avec la dernière version de Chrome et un autre navigateur supplémentaire.


Le Site Web

Problèmes de sécurité

Assurez-vous que le site web est sécurisé. Vérifiez dans la base de données que les mots de passe sont hachés. Contrôlez que le serveur effectue une validation et une sanitation côté serveur sur les formulaires et toutes les entrées utilisateur. Si ce n'est pas fait, l'évaluation s'arrête immédiatement.

Profil utilisateur - privé

Lorsqu'il est connecté, l'utilisateur a accès à son profil où il peut modifier ses informations. Par exemple, il peut changer son pseudo (qui doit être unique) ou son avatar (qui est un avatar par défaut si non défini).

Profil utilisateur - public

Les utilisateurs peuvent voir le profil des autres utilisateurs. Un profil contient des informations de base telles que leur pseudo, leur avatar, ou un bouton pour les ajouter en tant qu'amis. L'utilisateur peut bloquer d'autres utilisateurs. Cela signifie qu'il ne recevra pas de messages privés des comptes qu'il a bloqués, ni ne pourra voir leurs messages dans les canaux publics/privés.

Interface des amis

L'utilisateur a accès à une interface d'amis, où il peut voir ses amis et leur statut (hors ligne/en ligne/en jeu, etc.). Il a également accès aux informations de base les concernant (nom/pseudo, avatar, etc.).

2FA

L'utilisateur peut activer/désactiver l'authentification à deux facteurs (2FA). Si activée, il doit la passer pour se connecter. Par exemple, la 2FA peut utiliser Google Authenticator, un message texte, un email, etc.


Interface de chat

Rejoindre/quitter des canaux

Un utilisateur connecté peut accéder au service de chat du site web. Rejoindre/quitter des canaux est une action manuelle. Par exemple, cela signifie que cela ne doit pas être fait lors de la déconnexion (l'utilisateur doit cliquer sur un bouton "Quitter le canal" ou autre). L'utilisateur peut rejoindre des canaux (qui peuvent déjà être créés) pour discuter. Certains d'entre eux peuvent être protégés par mot de passe. Dans ce cas, l'utilisateur doit entrer le mot de passe correct pour rejoindre le canal.

Utilisation du chat

Les utilisateurs peuvent discuter. Les messages doivent être envoyés/reçus instantanément. Si l'utilisateur a bloqué un autre utilisateur, les messages de la personne bloquée doivent être cachés. L'utilisateur peut accéder au profil utilisateur des autres joueurs depuis l'interface de chat et les inviter également à un duel Pong.

Création de canaux

L'utilisateur peut créer de nouveaux canaux. Le créateur du canal est défini comme le propriétaire du canal et possède des droits de modération de base (bannir/silencier des utilisateurs, ajouter un mot de passe pour protéger le canal, définir de nouveaux administrateurs, etc.).

Rôles des canaux

Un utilisateur qui est propriétaire d'un canal peut expulser, bannir, mettre en sourdine d'autres utilisateurs et les administrateurs du canal. Un utilisateur qui est administrateur d'un canal peut expulser, bannir, mettre en sourdine d'autres utilisateurs, mais pas les propriétaires du canal.



Le jeu

Système de matchmaking

Lorsqu'il est connecté, l'utilisateur a accès à un système de matchmaking pour jouer à des parties de Pong 1v1 contre d'autres joueurs sur le site web. Lorsqu'ils sont appariés, une nouvelle partie est chargée et les deux utilisateurs peuvent commencer à jouer.

Gameplay

Le jeu lui-même doit être jouable et respecter le jeu original de Pong. Les commandes doivent être intuitives ou correctement expliquées (avec des règles ou un manuel). Lorsqu'une partie est terminée, un écran de fin de jeu doit être affiché ou la page du jeu doit simplement se fermer.

Mode spectateur

Il existe un mode spectateur. L'utilisateur peut regarder toutes les parties en direct. Elles peuvent être accessibles via l'interface de chat ou l'interface d'amis. Il peut également y avoir une page dédiée aux jeux en direct, à partir de laquelle l'utilisateur peut y accéder.

Lags & Déconnexions

Les déconnexions inattendues et les lags doivent être gérés. Le jeu et le site web ne doivent pas planter lorsqu'un utilisateur rencontre des lags ou est déconnecté. La gestion de ces problèmes de manière efficace est appréciée, mais non obligatoire :

  • Mettre le jeu en pause pendant une durée définie.
  • Les utilisateurs déconnectés peuvent se reconnecter.
  • Les utilisateurs ayant des lags peuvent rattraper le match.
  • Et ainsi de suite. Toute solution est acceptable. La seule exigence est que le jeu ne doit pas planter.

Fonctionnalités supplémentaires

L'utilisateur peut profiter de fonctionnalités supplémentaires telles que des power-ups, des cartes différentes, des réalisations, etc.

Évaluations

N'oubliez pas de vérifier le drapeau correspondant à la défense