Crée un site avec le jeu Pong avec un multijoueurs, une interface utilisateur et un chat.
- Toutes les libs sont autorisés mais obligé d'utiliser la last stable.
- Se lance avec
docker-compose up --build
. - Doit ĂȘtre compatible avec la last stable de Chrome, Firefox et Safari.
Lâutilisateur ne doit pas rencontrer dâerreurs non gĂ©rĂ©es ou dâavertissement sur votre site
- Doit inclure un systĂšme de compte utilisateur avec le OAuth de l'intra 42.
- L'utilisateur doit pouvoir :
- Choisir un pseudo unique qui doit ĂȘtre affichĂ© sur le site
- Choisir un avatar, avec un avatar par défaut (un générateur d'image serait intéressant ??)
- Utiliser A2F (2FA) pour authentification à deux facteurs ou two-factor authentication , ou l'envoie d'un SMS sur son téléphone.
- Avoir des amis et voir s'ils sont connectés, déconnectés, en train de jouer, etc.
- Voir ses stats (ex : victoires et défaites, rang et niveaux, hauts faits, etc.)
- Voir son historique et qui sera accessible par toute autre personne connectée au site (historique comportant les parties 1 contre 1, les niveaux et ainsi de suite).
- Bloquer quelqu'un.
- Le chat :
- Création de channels, publics, privés ou protéger par des mdp (mot de passe).
- Doit inclure des MPs (messages privés).
- Ne pas voir les messages d'un utilisateur bloqué.
- Le créateur du channel devient son owner (propriétaire) jusqu'à ce qu'il le quitte.
- Il peut mettre un mdp sur le channel, le modifier et le retirer.
- Il peut donner le rĂŽle admin aux autres.
- Les admins peuvent ban ou mute les autres.
- Possibilité d'inviter à une partie un utilisateur et d'accéder au profil (ex : en cliquant sur un pseudo ou avatar).
- Pong :
- Partie en live contre un autre joueur.
- SystĂšme de matching : lâutilisateur rejoint une file dâattente jusquâĂ ĂȘtre matchĂ© automatiquement avec quelquâun dâautre.
- Peut ĂȘtre un jeu canvas, ĂȘtre rendu en 3D, ou mĂȘme nâĂȘtre pas trĂšs beau Ă voir, etc. ..., mais dans tous les cas, il doit ĂȘtre fidĂšle au Pong original de 1972.
- Le jeu doit ĂȘtre responsive.
- Il doit y avoir un mode spectateur, pouvoir voir les parties en cours.
Vous devez offrir quelques options de customisation (par exemple, des power-ups ou des maps diffĂ©rentes) mais lâutilisateur doit pouvoir jouer Ă la version par dĂ©faut sans options sâil le souhaite
Ayez en tĂȘte les soucis de rĂ©seau comme les dĂ©connexions inattendues ou des latences. Vous devez vous efforcer dâoffrir la meilleure expĂ©rience utilisateur possible.
- Doit ĂȘtre Ă©crit en NestJS.
- Doit ĂȘtre protĂ©gĂ© contre les injections SQL.
- Doit inclure un systĂšme de validation cĂŽtĂ© serveur pour les formulaires et toute requĂȘte utilisateur.
- Doit ĂȘtre Ă©crit avec le framework TypeScript de notre choix.
- Doit ĂȘtre une application web monopage et les boutons PrĂ©cĂ©dent et Suivant doivent fonctionner.
C'est un raccourci pour SystÚme de gestion de base de données, ou database management system en anglais.
- Doit utiliser une base de données PostgreSQL. Aucune autre n'est autorisée.
- Les mots de passes doivent ĂȘtre chiffrĂ©s.