Ft_transcendance is a Docker-compose deployable webgame that features social-networking mechanisms such as friendships, direct-messages, and profile pictures. It includes a real-time multiplayer version of the classic game Pong and a chatroom with administration roles. The project also implements authentication using OAuth2 (through the 42school provider) and a 2FA-TOTP implementation. It is built on top of NestJS as the backend, PostgreSQL as the database, and ReactJS/Tailwind as the frontend.
The project is composed of the following images:
- nestjs: The backend server built with NestJS.
- prisma_studio: A visual database management tool (Prisma Studio) connected to a PostgreSQL database.
- react: The frontend application built with ReactJS.
To run this project, you need to have the following dependencies installed:
- Docker
- Docker Compose
You also need to have access to API credentials from 42 School.
To run the project, follow these steps:
- Clone the repository:
git clone https://github.com/misteriaud/ft_transcendance.git
cd ft_transcendance
- Create a .env file by copying the provided .env.example file:
cp .env.example .env
- Update the environment variables in the .env file to match your configuration.
- Build and run the containers using Docker Compose or the Makefile:
docker-compose up --build
or
make
This will start the NestJS backend, PostgreSQL database, and React frontend.
- Once the containers are running, you can access the application by opening http://localhost:8080 in your web browser.
- REST API concepts
- React and Typescript
- Websockets
- Multiplayer network gaming concepts (prediction, latency management, queue management...)
- Interface between NestJS Object-oriented data-structure and PostgreSQL relational database via Prisma.
- Authentication and authorization standards (OAuth2, JWT, Password hashing, TOTP).