
Contributors:

Trainscendence
Time to shine!
Project Overview
Version 15.1
ft_transcendence is a group project focused on creating a website for a Pong contest. The project requires adherence to specific technical and security constraints, with opportunities for modular enhancements.
- Flexibility in module implementation within specified constraints. Justifications may be required during evaluation.
- Use of libraries or tools that provide complete solutions for features or modules is prohibited. Small libraries for subcomponents are allowed.
Thanks to your website, users will play Pong with others.
Mandatory Requirements
- Website Development
- Single-page application using pure vanilla JavaScript for frontend unless overridden by a module.The user should be able to use the Back and Forward buttons of the browser.
- Backend in pure Ruby, unless overridden by a module.
- Compatibility with the latest version of Google Chrome.
- No unhandled errors or warnings during navigation.
- Deployment via a single Docker command, using rootless mode on Linux clusters.
- Game Features
- Real-time multiplayer Pong game with identical paddle speeds for all players, including AI.
- Tournament system with player registration and matchmaking.
- Security Concerns
- Password hashing, protection against SQL injections/XSS.
- HTTPS for all connections.
- Form and user input validation.
Modules
- Minimum of 7 Major Modules Required:
- Options include Web, User Management, Gameplay, AI-Algo, Cybersecurity, DevOps, Graphics, Accessibility, and Server-Side Pong.
Evaluation
- While the visual aesthetics can vary, it must still capture the essence of the original Pong (1972).
- Bonus points available for additional modules, assessed only if mandatory requirements are perfectly met.
Running the application
On the root level of the project, run the following command:
This will build the Docker image and run the application. The application will be available at http://localhost:8080
.
node exporter
This container will expose a Prometheus exporter for the host machine. It will be available at http://localhost:9100/metrics
.
grafana
This container will run a Grafana instance. It will be available at http://localhost:3000
.
prometheus
This container will run a Prometheus instance. It will be available at http://localhost:9090
.
redis
This container will run a Redis instance. It will avalaible on the port 6379 via the redis protocol.
postgres
This container will run a Postgres instance. It will run on the port 5432 and the backend will be able to connect to it.
There is a grafana dashboard connected to this datasource.
backend
This container will run the backend of the application. It will be available at http://localhost:8080
.
tempo
This container will run a Tempo instance.
modules