/ft_transcendence

Create a website with a game, a chat and an account handler

Primary LanguageTypeScript

🚧 ft_transcendence

Sujet

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

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.

BackEnd

  • 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.

FrontEnd

  • 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.

SGBD (DBMS)

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.