42-transcendence

42 License: MIT Version

Contributors:

GitHub GitHub GitHub GitHub GitHub

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.

Thanks to your website, users will play Pong with others.

Mandatory Requirements

  1. 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.
  2. Game Features
    • Real-time multiplayer Pong game with identical paddle speeds for all players, including AI.
    • Tournament system with player registration and matchmaking.
  3. Security Concerns
    • Password hashing, protection against SQL injections/XSS.
    • HTTPS for all connections.
    • Form and user input validation.

Modules

Evaluation

Running the application

On the root level of the project, run the following command:

make

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