Le projet ft_transcendence
est une plateforme Web innovante centrée sur le jeu Pong
. Bien plus qu'un simple jeu local, il s'agit d'une application web complète, évolutive, et riche en fonctionnalités, permettant des interactions temps réel entre utilisateurs. Ce projet est conçu comme un exercice d'excellence en développement web, DevOps
, et cybersécurité
.
- Jeu Pong en ligne :
- Mode
1v1
surmême machine
Tournoi
avec organisationautomatique
desmatchs
.
- Mode
- Application Web Monopage (
SPA
) :- Développée en
JavaScript
:vanilla
. - Compatible avec la dernière version stable de
Google Chrome
.
- Développée en
- Sécurité Basique :
- Connexion
HTTPS
. - Protection contre les injections
SQL
etXSS
. - Stockage des mots de passe
hashés
.
- Connexion
- Conteneurisation avec
Docker
:- Déploiement via une commande simple (
docker-compose up --build
).
- Déploiement via une commande simple (
Le projet peut être enrichi avec de nombreux modules pour atteindre 100 %
de complétion :
- Backend avec
Django
. - Utilisation de
PostgreSQL
comme base de données.
- Authentification
OAuth2.0/42
. - Gestion des
profils
avecavatars
, historique desmatchs
, etstatistiques
. - Système d'
amis
avec affichage dustatut
en ligne.
- Matchmaking
automatisé
.
- Mise en place de
WAF/ModSecurity
. - Gestion des
secrets
avecHashiCorp Vault
. - Authentification
2FA
etJWT
. - Conformité
GDPR
.
- Gestion des
logs via ELK
(Elasticsearch, Logstash, Kibana)
. - Architecture
backend
enmicroservices
.
- Multi-langue, compatibilité
multi-navigateurs
.
ft_transcendence/
.
├── backend
│ ├── conecte_me_backend
│ │ ├── asgi.py
│ │ ├── __init__.py
│ │ ├── middleware.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ ├── views.py
│ │ └── wsgi.py
│ ├── Dockerfile
│ ├── entrypoint.sh
│ ├── game
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── consumers.py
│ │ ├── __init__.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_gamesettings_paddle_size_matchhistory.py
│ │ │ └── __init__.py
│ │ ├── models.py
│ │ ├── routing.py
│ │ ├── tests.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── logs
│ │ ├── django.log
│ │ └── frontend.log
│ ├── manage.py
│ ├── media
│ │ └── profile_pictures
│ │ └── default_avatar.png
│ ├── oauth_app
│ │ ├── __init__.py
│ │ ├── jwt_decorator.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_user42_email_address_user42_first_name_and_more.py
│ │ │ ├── 0003_user42_is_2fa_enabled_user42_totp_secret.py
│ │ │ ├── 0004_alter_user42_totp_secret.py
│ │ │ ├── 0005_user42_profile_image.py
│ │ │ ├── 0006_alter_user42_profile_image_userloginhistory.py
│ │ │ ├── 0007_userloginhistory_is_connected.py
│ │ │ ├── 0008_alter_user42_username.py
│ │ │ └── __init__.py
│ │ ├── models.py
│ │ ├── templates
│ │ │ └── 2fa_setup.html
│ │ ├── tests.py
│ │ ├── twofa_views.py
│ │ ├── urls.py
│ │ ├── utils.py
│ │ └── views.py
│ ├── requirements.txt
│ └── tournament
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── certs
│ ├── localhost.crt
│ └── localhost.key
├── docker-compose.yml
├── elk
│ ├── elasticsearch
│ │ └── elasticsearch.yml
│ ├── elk_initializer.sh
│ ├── filebeat.yml
│ ├── kibana
│ │ └── kibana.yml
│ ├── logstash
│ │ ├── logstash.conf
│ │ └── logstash.yml
│ └── saved_objects.ndjson
├── frontend
│ ├── Dockerfile
│ ├── index.html
│ └── static
│ ├── css
│ │ ├── board.css
│ │ ├── game.css
│ │ ├── game_tournament.css
│ │ ├── login.css
│ │ ├── main.css
│ │ ├── privacy.css
│ │ ├── setup.css
│ │ ├── signup.css
│ │ ├── social.css
│ │ ├── stats.css
│ │ ├── team.css
│ │ ├── terms.css
│ │ ├── tournament.css
│ │ ├── tournament_details.css
│ │ └── user.css
│ ├── fonts
│ │ ├── PongGame.woff
│ │ └── PongGame.woff2
│ ├── img
│ │ ├── 42_logo.png
│ │ ├── default_avatar.png
│ │ ├── favicon.ico
│ │ ├── field_basketball.png
│ │ ├── field_hockey.png
│ │ ├── field_NFL.png
│ │ ├── Game_anime.png
│ │ ├── jecointr.jpg
│ │ ├── mmaric.jpg
│ │ ├── ode-cleb.jpg
│ │ ├── PONG_Accueil.png
│ │ ├── PONG_seul.png
│ │ ├── raveriss.jpg
│ │ ├── return_arrow.png
│ │ └── sycourbi.jpg
│ ├── js
│ │ ├── 2fa.js
│ │ ├── board.js
│ │ ├── game.js
│ │ ├── game_tournament.js
│ │ ├── i18n.js
│ │ ├── login.js
│ │ ├── main.js
│ │ ├── router.js
│ │ ├── setup.js
│ │ ├── signin42.js
│ │ ├── signup.js
│ │ ├── social.js
│ │ ├── stats.js
│ │ ├── tournament_details.js
│ │ ├── tournament.js
│ │ ├── translations.json
│ │ └── user.js
│ ├── sounds
│ │ └── hit.mp3
│ └── templates
│ ├── board.html
│ ├── game.html
│ ├── game_tournament.html
│ ├── home.html
│ ├── login.html
│ ├── privacy.html
│ ├── setup.html
│ ├── signin42.html
│ ├── signup.html
│ ├── social.html
│ ├── stats.html
│ ├── team.html
│ ├── terms.html
│ ├── tournament_details.html
│ ├── tournament.html
│ └── user.html
├── nginx.conf
└── README.md
Docker
etDocker Compose
installés.- Navigateur moderne (
Google Chrome
recommandé).
-
1. Clonez le dépôt :
git clone https://github.com/raveriss/ft_transcendence.git cd ft_transcendence
-
2. Configurez les variables d'environnement :
- Créez un fichier
.env
à la racine et renseignez-y vos clésAPI
, mots de passe et paramètres.
- Créez un fichier
-
3. Lancez l'application :
docker-compose up --build
-
4. Accédez à l'application :
- Ouvrez votre navigateur et rendez-vous sur
https://localhost:8443
.
- Ouvrez votre navigateur et rendez-vous sur
1
.Backend Framework
: Développement du backend avecDjango
.2
.User Management
: Authentification, gestion des profils et historique des matchs.3
.Gameplay
: Personnalisation des règles**.4
.Cybersecurity
: Mise en place de2FA
etJWT
.5
.DevOps
: Gestion des logs avecELK
.
Accessibilité
: Compatibilité multi-langue