Giter VIP home page Giter VIP logo

ft_transcendence's People

Contributors

nouchata avatar tmatis avatar usr99 avatar

Watchers

 avatar

ft_transcendence's Issues

Global Tasks

Vue d’ensemble

  • Le backend de votre site doit être écrit en NestJS.
  • Quant au frontend, il sera réalisé avec le framework TypeScript de votre choix.
  • Vous êtes libre d’utiliser les bibliothèques que vous souhaitez dans ce contexte.
    Toutefois, vous avez pour obligation de choisir la dernière version stable de
    chaque bibliothèque ou framework utilisé.
  • Vous devez utiliser une base de données PostgreSQL. Aucune autre base de données
    n’est autorisée.
  • Votre site web doit être une application web monopage. L’utilisateur doit pouvoir
    utiliser les boutons Précédent et Suivant du navigateur
  • Votre site web doit être compatible avec la dernière version stable à jour de
    Google Chrome, Firefox et Safari.
  • L’utilisateur ne doit pas rencontrer d’erreurs non gérées ou d’avertissement sur
    votre site.
  • Vous devez lancer le tout par un simple appel à : docker-compose up --build

Questions de sécurité

  • Tout mot de passe stocké dans votre base de données doit être chiffré
  • Votre site web doit être protégé contre les injections SQL.
  • Vous devez implémenter un système de validation côté serveur pour les formulaires
    et toute requête utilisateur.

Compte utilisateur

  • L’utilisateur doit pouvoir se loguer avec le système OAuth de l’intranet 42.
  • L’utilisateur doit pouvoir choisir un nom d’utilisateur unique qui sera affiché sur
    le site web.
  • L’utilisateur doit pouvoir télécharger un avatar. S’il n’en met pas, un avatar par
    défaut doit être affiché.
  • L’utilisateur doit pouvoir activer l’authentification à deux facteurs, ou 2FA,
    comme Google Authenticator ou l’envoi d’un SMS sur son téléphone portable
  • L’utilisateur doit pouvoir ajouter d’autres utilisateurs comme ami(e)s et voir leur
    statut en temps réel (en ligne, hors-ligne, en pleine partie, etc.)
  • Des stats (telles que : victoires et défaites, rang et niveaux, hauts faits, etc.) doivent
    être affichées sur le profil de l’utilisateur.
  • Chaque utilisateur doit avoir un Match History (historique comportant les par-
    ties 1 contre 1, les niveaux et ainsi de suite). Toute personne loguée doit pouvoir
    le consulter.

Chat

  • L’utilisateur doit pouvoir créer des channels (salons de discussion) pouvant être
    soit publics, privés, ou protégés par mot de passe
  • L’utilisateur doit pouvoir envoyer des direct messages à d’autres utilisateurs.
  • L’utilisateur doit pouvoir en bloquer d’autres. Ainsi, il ne verra plus les messages
    envoyés par les comptes qu’il aura bloqués.
  • L’utilisateur qui crée un nouveau channel devient automatiquement son owner
    (propriétaire). Ceci, jusqu’à ce qu’il le quitte.
    • Le propriétaire du channel peut définir un mot de passe requis pour accéder
      au channel, le modifier, et le retirer.
    • Le propriétaire du channel en est aussi un administrateur. Il peut donner le
      rôle d’administrateur à d’autres utilisateurs.
    • Les administrateurs du channel peuvent bannir ou mute d’autres utilisateurs
      pendant une durée déterminée.
  • Grâce à l’interface de chat, l’utilisateur doit pouvoir en inviter d’autres à faire
    une partie de Pong.
  • Grâce à l’interface de chat, l’utilisateur doit pouvoir accéder aux profils d’autres
    joueurs.

Le jeu

  • L’utilisateur doit pouvoir lancer une partie de Pong en live contre
    un autre joueur, directement sur votre site web.
  • Il doit y avoir un système de matching : l’utilisateur rejoint une file d’attente
    jusqu’à être matché automatiquement avec quelqu’un d’autre.
  • Votre jeu 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
  • 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.
  • Le jeu doit être responsive
  • L’utilisateur doit pouvoir regarder les parties d’autres joueurs en temps réel, mais
    sans pouvoir cependant intervenir.
  • 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

macos's safari login behavior

it seems that macos has a weird behavior w/ pop-up on safari tho they can be summoned using an onClick event so it would be nice to add a safari-only button to prompt the pop-up.

Page d'accueil

Jusque là après le login on arrive sur une page vierge, il faudrait une page d'accueil digne de ce nom qui serait en quelque sorte le menu principal avec la possibilité d'y lancer le matchmaking, consulter sa liste d'amis, son profil, le ladder et les différents channels de chat.

Sans titre

C'est juste un modèle, sentez vous libre de laisser cours à votre créativité.

User status

Le statut Online/Offline est un peu douteux, peut-etre utiliser les WS pour le gerer ?
Il manque le statut ingame aussi

Security concerns

  • Any password stored in your database must be encrypted
  • Your website must be protected against SQL injections
  • You must implement some kind of server-side validation for forms and any user
    input

Page de profil utilisateur

Une page permettant de consulter toutes les informations relatives à un utilisateur précis (avatar, nom, rank, historique de matchs, etc.) et d'éditer certaines de ses données si l'utilisateur connecté est sur sa propre page de profil.

Last issues

  • Réactualiser ladder après actualisation loginStatus
  • Image avatar sur profile (object-fit)
  • Réparer 2FA
  • Forcer la fermeture du modal d'ajout d'ami si l'ajout est concluant
  • #113
  • #112
  • Dépendance circulaire GameGateway
  • LoginProvider fix

Chat

  • Users must be able to create channels public/private or protected by a password
  • Users must be able to send direct messages to other users
  • Users must be able to block other user and therefore they will not see their messages
    anymore
  • A user that creates a new channel is automatically its owner until he leaves the
    channel
  • #29
  • owner can select a user to be an administrator and is also an administrator of
    the channel
  • administrator can ban or mute users for a certain amount of time
  • Through the chat interface users should be able to ask other players to do a Pong
    match
  • Through the chat interface users must be able to see other players profiles

fix deps warning

warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/core@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/settings@^6.0.0".
warning "@pixi/filter-advanced-bloom > @pixi/[email protected]" has unmet peer dependency "@pixi/constants@^6.0.0".
warning "@pixi/filter-advanced-bloom > @pixi/[email protected]" has unmet peer dependency "@pixi/core@^6.0.0".
warning "@pixi/filter-advanced-bloom > @pixi/[email protected]" has unmet peer dependency "@pixi/math@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/constants@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/core@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/math@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/constants@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/core@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/math@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/constants@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/core@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/math@^6.0.0".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/[email protected]".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/core@>=5".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/loaders@>=5".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/ticker@>=5".
warning " > @pixi/[email protected]" has unmet peer dependency "@pixi/utils@>=5".
warning " > [email protected]" has unmet peer dependency "@pixi/loaders@>=5".
warning " > [email protected]" has unmet peer dependency "@pixi/text@>=5".
warning "react-scripts > [email protected]" has unmet peer dependency "autoprefixer@^10.0.2".
warning "react-scripts > eslint-config-react-app > [email protected]" has unmet peer dependency "@babel/plugin-syntax-flow@^7.14.5".
warning "react-scripts > eslint-config-react-app > [email protected]" has unmet peer dependency "@babel/plugin-transform-react-jsx@^7.14.9".
warning Workspaces can only be enabled in private projects.```

Game

FPM refers to this

  • Racket
    • Collision
    • Animation
    • Movement
    • FPM
    • Responsiveness
    • Controls
    • Effects
  • Ball
    • Collision
    • Animation
    • Movement
    • FPM
    • Responsiveness
    • Effects
    • Powers effects
  • GUI
    • Scene handler
    • Effects
    • Points & power GUI
  • Scenes
    • Loading scene (assets & sound enabling)
    • Starter scene (countdown before launching the game)
    • Game scene
    • Disconnect scene
    • End scene
  • Server
    • Websockets
    • Instances handler
    • Controls handler
    • Disconnection handler
    • Movement checker
    • Charging checker
    • Movement cheat handler
    • #72
    • Score handler
    • Power handler
    • Game state handler
    • End game behavior ( @usr99 )

To check before lock

Vue d’ensemble

  • Le backend de votre site doit être écrit en NestJS.
  • Quant au frontend, il sera réalisé avec le framework TypeScript de votre choix.
  • Vous êtes libre d’utiliser les bibliothèques que vous souhaitez dans ce contexte.
    Toutefois, vous avez pour obligation de choisir la dernière version stable de
    chaque bibliothèque ou framework utilisé.
  • Vous devez utiliser une base de données PostgreSQL. Aucune autre base de données
    n’est autorisée.
  • Votre site web doit être une application web monopage. L’utilisateur doit pouvoir
    utiliser les boutons Précédent et Suivant du navigateur
  • Votre site web doit être compatible avec la dernière version stable à jour de
    Google Chrome, Firefox et Safari.
  • L’utilisateur ne doit pas rencontrer d’erreurs non gérées ou d’avertissement sur
    votre site.
  • Vous devez lancer le tout par un simple appel à : docker-compose up --build

Questions de sécurité

  • Tout mot de passe stocké dans votre base de données doit être chiffré
  • Votre site web doit être protégé contre les injections SQL.
  • Vous devez implémenter un système de validation côté serveur pour les formulaires
    et toute requête utilisateur.

Compte utilisateur

  • L’utilisateur doit pouvoir se loguer avec le système OAuth de l’intranet 42.
  • L’utilisateur doit pouvoir choisir un nom d’utilisateur unique qui sera affiché sur
    le site web.
  • L’utilisateur doit pouvoir télécharger un avatar. S’il n’en met pas, un avatar par
    défaut doit être affiché.
  • L’utilisateur doit pouvoir activer l’authentification à deux facteurs, ou 2FA,
    comme Google Authenticator ou l’envoi d’un SMS sur son téléphone portable
  • L’utilisateur doit pouvoir ajouter d’autres utilisateurs comme ami(e)s et voir leur
    statut en temps réel (en ligne, hors-ligne, en pleine partie, etc.)
  • Des stats (telles que : victoires et défaites, rang et niveaux, hauts faits, etc.) doivent
    être affichées sur le profil de l’utilisateur.
  • Chaque utilisateur doit avoir un Match History (historique comportant les par-
    ties 1 contre 1, les niveaux et ainsi de suite). Toute personne loguée doit pouvoir
    le consulter.

Chat

  • L’utilisateur doit pouvoir créer des channels (salons de discussion) pouvant être
    soit publics, privés, ou protégés par mot de passe
  • L’utilisateur doit pouvoir envoyer des direct messages à d’autres utilisateurs.
  • L’utilisateur doit pouvoir en bloquer d’autres. Ainsi, il ne verra plus les messages
    envoyés par les comptes qu’il aura bloqués.
  • L’utilisateur qui crée un nouveau channel devient automatiquement son owner
    (propriétaire). Ceci, jusqu’à ce qu’il le quitte.
    • Le propriétaire du channel peut définir un mot de passe requis pour accéder
      au channel, le modifier, et le retirer.
    • Le propriétaire du channel en est aussi un administrateur. Il peut donner le
      rôle d’administrateur à d’autres utilisateurs.
    • Les administrateurs du channel peuvent bannir ou mute d’autres utilisateurs
      pendant une durée déterminée.
  • Grâce à l’interface de chat, l’utilisateur doit pouvoir en inviter d’autres à faire
    une partie de Pong.
  • Grâce à l’interface de chat, l’utilisateur doit pouvoir accéder aux profils d’autres
    joueurs.

Le jeu

  • L’utilisateur doit pouvoir lancer une partie de Pong en live contre
    un autre joueur, directement sur votre site web.
  • Il doit y avoir un système de matching : l’utilisateur rejoint une file d’attente
    jusqu’à être matché automatiquement avec quelqu’un d’autre.
  • Votre jeu 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
  • 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.
  • Le jeu doit être responsive
  • L’utilisateur doit pouvoir regarder les parties d’autres joueurs en temps réel, mais
    sans pouvoir cependant intervenir.
  • 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

Page de profil qui refresh pas

Si on clique sur le bouton See profile d'un utilisateur alors que l'on est deja sur la page de profil d'un autre, l'URL change mais les infos affichees restent celles du precedent utilisateur

pistes:

  • componentDidUpdate()?
  • rework en functional component ?

Auth & User Account

  • A user must log in using the OAuth system of 42 intranet
  • #25
  • A user has several victories and losses and other stats (ladder level, achievements
    etc...)
  • A user must have an avatar generated or uploaded by the user
  • #26
    or an SMS etc...)
  • #27
    in a game...)
  • #28
    anyone logged-in

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.