Last project of 42School
Este projeto é dividido em duas partes: o backend e o frontend. Siga estas instruções para configurar e iniciar o projeto:
- Navegue até o diretório backend:
cd backend
- Instale as dependências necessárias:
npm install
- Inicie o servidor em modo de desenvolvimento:
npm run start:dev
O backend agora está em execução.
- Navegue até o diretório frontend:
cd frontend
- Instale as dependências necessárias:
npm install
- Inicie a aplicação frontend:
npm start
Agora, acesse a página em seu navegador para interagir com o projeto.
- Certifique-se de ter o Node.js instalado em sua máquina.
- As instruções assumem que você está usando um ambiente de desenvolvimento. Ajuste conforme necessário para produção.
- Para obter mais detalhes sobre o projeto ou solucionar problemas comuns, consulte a documentação no nosso portfólio.
Divirta-se explorando o Ft_Transcendence!
II.1 Overview Thanks to your website, users will play Pong with others. You will provide a nice user interface, a chat, and real-time multiplayer online games! Your work has to comply with the following rules:
-
Your website backend must be written in NestJS.
-
The frontend must be written with a TypeScript framework of your choice.
-
You are free to use any library you want to in this context. 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 and 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 When your computers in clusters run under Linux, you will use Docker in rootless mode for security reasons. This comes with 2 sideways:
- your Docker runtime files must be located in /goinfre or /sgoinfre.
- you can’t use so called “bind-mount volumes” between the host and the container if non-root UIDs are used in the container. Depending on the project, your situation and the context, several fallbacks exist: Docker in a VM, rebuild you container after your changes, craft your own docker image with root as unique UID. 3ft_transcendence
II.2 Soon, you will realize that you already know things that you thought you didn’t Security concerns In order to create a fully functional website, here are a few security concerns that you have to tackle:
-
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. Publicly stored credentials will lead you directly to a failure of the project.
II.3 User Account
-
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 or sending a text message to their phone.
-
The user should be able to add other users as friends and see their current status
- online
- offline
- in a game
- and so forth.
-
Stats (such as:
- wins
- losses
- ladder/ ranking
- level
- achievements
- and so forth) have to be displayed on the user profile.
-
Each user should have a Match History including:
- 1v1 games
- ladder
- and any thing else useful
- Anyone who is logged in should be able to consult it. Clicar na foto em qualuer lugar do jogo, abre o profile.
II.4 Soon, you will realize that you already know things that you thought you didn’t Chat You also have to create a chat for your users:
-
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.
-
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. (Se você for adm, pode adicionar outros adm)
A user who is an administrator of a channel: - [x] can kick - [x] ban - [x] mute (for alimited time) - [x] 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.
II.5 Game The main purpose of this website is to play Pong versus other players.
-
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 or different 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!