Skip to content

This project is about creating a multiplayer real time Pong game webapp with websocket based chat.

Notifications You must be signed in to change notification settings

RidaEn-nasry/ft_transcendence

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ft_transcendence

This project is about creating a multiplayer real-time ping-Pong game webapp with friends, invites, chat and many more.

pingpong

Overview

Users can play Pong with others in a nice user interface, a chat, and real-time multiplayer online games!

  • Backend is written in NestJS & typescript.
  • PostgreSQL is used as a database.
  • The website is single-page application.
  • The website is compatible with the latest stable up-to-date version of Google Chrome and firefox.
  • Everything can to be launched by a single call to: docker-compose up --build

Security concerns

a few security concerns that we have taken into consideration:

  • All passwords stored in the database are hashed beforehand.
  • The website is protected against SQL injections.
  • Ther is a server-side validation for forms and any user input.

User Account

The user can login using the OAuth system of 42 intranet.

  • The user is able to choose a unique name that will be displayed on the website.
  • The user is able to upload an avatar. If the user doesn’t upload an avatar, a default one is set.
  • The user is able to enable two-factor authentication. For instance, Google Authenticator.
  • The user is able to add other users as friends and see their current status (online, offline, in a game, and so forth).
  • Stats (such as: wins and losses, ladder level, achievements, and so forth) is displayed on the user profile.
  • Each user has a Match History including 1v1 games, ladder... Anyone who is logged in should be able to consult it.

Chat

  • The user can create channels (chat rooms) that can be either public, or private, or protected by a password.
  • The user can send direct messages to other users.
  • The user can block other users. This way, they will see no more messages from the account they blocked.
  • The user who has created a new channel is automatically set as the channel owner until they leave it.
    • The channel owner can set a password required to access the channel, change it, and also remove it.
    • The channel owner is a channel administrator. They can set other users as administrators. ◦ The administrators of a channel can ban or mute users for a limited time.
  • The user can invite other users to play a Pong game through the chat interface.
  • The user can access other players profiles through the chat interface.

Game

The main purpose of this website is to play Pong versus other players and show everyone how good you are!

  • Therefore, users can play a live Pong game versus another player directly on the website.
  • There's a matchmaking system: the user can join a queue until they get automatically matched with someone else.
  • The game is faithful to the original Pong (1972).
  • The game is responsive!

Data Base

Contributers

Technology used

About

This project is about creating a multiplayer real time Pong game webapp with websocket based chat.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 97.5%
  • Makefile 0.8%
  • EJS 0.7%
  • SCSS 0.5%
  • Shell 0.2%
  • HTML 0.1%
  • Other 0.2%