ft_transcendence's People
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.
- Le propriétaire du channel peut définir un mot de passe requis pour accéder
- 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
Comment rejoindre un match en tant que spectateur ?
Il faudrait un bouton Spectate
qui s'affiche sur les utilisateurs ingame
pour regarder leur partie a partir de la fenetre de chat ou de la liste d'amis
A user can add other users as friends, and see their current status (online, offline,in a game...)
- friends table backend
- add friend Rest
- add friend front
- status exist
- dynamic status
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.
Metadata chat après être passé admin / owner
Each user has a match history (including duel, ladder) that can be consulted byanyone logged-in
PostgreSQL docker rework
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.
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
Module punishment
Weird ladder error on log off
Login safari issue
Le login boucle
petit rework needed
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
Ball cheat handler
owner of a channel can add/change/remove a password to access the channel
Persistance des icons utilsateur, et re ajout de la pp par default
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
Page loading bug
true en titre (en ligne...)
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
- 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
Blocked
A user must be able to choose a unique name that will be displayed on the website
- display name on backend
- unique
- find by display name
La raquette de spawn pas toujours au milieu de l'ecran
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.
- Le propriétaire du channel peut définir un mot de passe requis pour accéder
- 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
Uncaught TypeError: this.renderer is null
A user must be able to activate a 2-factor authentication (like google authenticatoror an SMS etc...)
Bug css friend
Ameliorer l'edition de profil et autres choses
- Mettre le champ
email
en read-only - Afficher les messages d'erreurs sur la modale d'edition
- Bloquer la requete d'amis si le champ
Username
est vide
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
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.