Skip to content

Requirements

Michelle Jiam edited this page Mar 30, 2023 · 1 revision
  • The backend must be written in NestJS.
  • The frontend must be written in a TypeScript framework.
  • The usage of a PostgreSQL database is required.
  • The website must be a single-page application and the user should be able to use the back and forward buttons in the browser.
  • The website should be responsive and offer the best user experience possible.
  • Launch the application by a single call to docker-compose up --build.

Security concerns

  • Any password stored in the database must be hashed.
  • The website must be protected against SQL injections.
  • Implement server-side validation for forms and any user input.

User Account

  • The user must login using the OAuth system of 42 intranet.
  • The user should be able to choose a unique name, upload an avatar and enable two-factor authentication.
  • The user should be able to add other users as friends and see their current status.
  • Stats have to be displayed on the user profile.
  • Each user should have a match history including 1v1 games and a ladder. Anyone who is logged in should be able to consult it.

Chat

  • The user should be able to create channels (chat rooms) that can be either public, or private, or protected by a password.
  • The user should be able to send direct messages to other users.
  • The user should be able to block other users.
  • 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. A user who is an administrator of a channel can kick, ban or mute (for a limited time) other users, but not the channel owners.
  • The user should be able to invite other users to play a Pong game through the chat interface.
  • The user should be able to access other players profiles through the chat interface.

Game

  • Users should be able to play a live Pong game versus another player.
  • There must be a matchmaking system: the user can join a queue until they get automatically matched with someone else.
  • The game must be faithful to the original Pong (1972).
  • You must offer some customization options.
Clone this wiki locally