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
1v1surmême machine Tournoiavec organisationautomatiquedesmatchs.
- 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
SQLetXSS. - 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
PostgreSQLcomme base de données.
- Authentification
OAuth2.0/42. - Gestion des
profilsavecavatars, historique desmatchs, etstatistiques. - Système d'
amisavec affichage dustatuten ligne.
- Matchmaking
automatisé.
- Mise en place de
WAF/ModSecurity. - Gestion des
secretsavecHashiCorp Vault. - Authentification
2FAetJWT. - Conformité
GDPR.
- Gestion des
logs via ELK(Elasticsearch, Logstash, Kibana). - Architecture
backendenmicroservices.
- 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.mdDockeretDocker Composeinstallés.- Navigateur moderne (
Google Chromerecommandé).
-
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 de2FAetJWT.5.DevOps: Gestion des logs avecELK.
Accessibilité: Compatibilité multi-langue












