-
Notifications
You must be signed in to change notification settings - Fork 0
3. Task
Pixailz edited this page Oct 22, 2023
·
12 revisions
π’ = done
π£ = Continuous Check
π = WIP
π΄ = not done
β« = not planned
secure | Status | Name | Desc |
---|---|---|---|
π΄ | π | Mandatory | all the task |
- Thanks to your website, users will play Pong with others.
- You are free to use any library you want to in this context.
You will provide a nice user interface, a chat, and real-time multiplayer online games! Your work has to comply with the following rules:
s | S | Desc |
---|---|---|
π’ | Your website backend must be written in NestJS. | |
π’ | The frontend must be written with a TypeScript framework of your choice. | |
π£ | However, you must use the latest stable version of every library or framework used in your project. | |
π’ | You must use a PostgreSQL database. Thatβs it, no other database. | |
π’ | Your website must be a single-page application. | |
π’ | The user should be able to use the Back and Forward buttons of the browser. | |
π£ | Your website must be compatible with the latest stable up-to-date version of: | |
π’ | - Google Chrome | |
π’ | - one additional web browser of your choice. | |
π£ | The user should encounter no unhandled errors and no warnings when browsing the website. | |
π’ | Everything has to be launch by a single call to: docker-compose up --build
|
In order to create a fully functional website, here are a few security concerns that you have to tackle:
s | S | Desc |
---|---|---|
π’ | Any password stored in your database must be hashed. | |
π£ | Your website must be protected against SQL injections. | |
π£ | You must implement some kind of server-side validation for forms and any user input. | |
π’ | Please make sure you use a strong password hashing algorithm | |
π’ | For obvious security reasons, any credentials, API keys, env variables etc... must be saved locally in a .env file and ignored by git. | |
π’ |
You also have to create a chat for your users:
s | S | Desc |
---|---|---|
π’ | π’ | The user must login using the OAuth system of 42 intranet. |
π’ | The user should be able to choose a unique name that will be displayed on the website. | |
π’ | The user should be able to upload an avatar. | |
π’ | If the user doesnβt upload an avatar, a default one must be set. | |
π’ | The user should be able to enable two-factor authentication. | |
π’ | For instance: | |
π’ | - Google Authenticator | |
β« | - sending a text message to their phone. | |
π’ | The user should be able to add other users as friends | |
π’ | And see other status : | |
π’ | - online | |
π’ | - offline | |
π’ | - in a game | |
π’ | - and so forth | |
π’ | Stats, such as: | |
π’ | - Wins and losses | |
π’ | - Ladder level | |
π’ | - Achievements | |
π’ | - And so forth | |
π’ | ||
π’ | Each user should have a Match History including: | |
π’ | - 1v1 games | |
π’ | - ladder | |
π’ | - and anything else useful | |
π’ |
s | S | Desc |
---|---|---|
π’ | 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. |
π’ | 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. |
s | S | Desc |
---|---|---|
π’ | The channel owner can | |
π’ | π’ | - Set a password required to access the channel |
π’ | π’ | - Change it |
π’ | π’ | - 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 |
π’ | π’ | - 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. |
The main purpose of this website is to play Pong versus other players.
s | S | Desc |
---|---|---|
π’ | Therefore, users should be able to play a live Pong game versus another player directly on the website. | |
π’ | There must be a matchmaking system: the user can join a queue until they get automatically matched with someone else. | |
π’ | It can be a canvas game, or it can be a game rendered in 3D, it can also be ugly, but in any case, it must be faithful to the original Pong (1972). | |
π’ | You must offer some customization options, for example: | |
π’ | - power-ups | |
π | - diffΓ©rent maps | |
π’ | However, the user should be able to select a default version of the game without any extra features if they want to. | |
π’ | The game must be responsive! |