FT Transcendence
FT Transcendence
Surprise.
Summary:
This project is about doing something you’ve never done before.
Remind yourself of the beginning of your journey in computer science.
Look at you now. Time to shine!
Version: 15.1
Contents
I Preamble 2
II Essential Points 3
IV Modules 9
IV.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
IV.2 Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
IV.3 User Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
IV.4 Gameplay and user experience . . . . . . . . . . . . . . . . . . . . . . 15
IV.5 AI-Algo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
IV.6 Cybersecurity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
IV.7 Devops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
IV.8 Gaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
IV.9 Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
IV.10 Accessibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
IV.11 Server-Side Pong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
V Bonus part 29
1
Chapter I
Preamble
2
Chapter II
Essential Points
If you believe it’s necessary to use nginx to set up your website, there’s no issue, but
ask yourself first, is it truly necessary? Can I do without it? Similarly, when faced with
a library that could assist you, it’s crucial to understand whether it will fulfill your tasks.
You’re not expected to rework uninteresting sub-layers but rather to make the proposed
features function.
It’s crucial to understand that you’ll encounter decisions where doubts about imple-
menting certain features will arise. Initially, it is STRONGLY recommended to
comprehend the project requirements thoroughly. Once you’ve grasped what needs to
be accomplished, it is necessary to stay within the framework of the project. When we
mention an imposed technology, it explicitly means that everything officially related to
the requested framework/language is allowed.
However, we emphasize that when you wish to implement a module, all restrictions
apply to that module. For instance, if you want to realize the project with the Backend
module as specified in the subject, you can no longer use the default language and must
adapt your project accordingly. If you still want to create a backend using the default
language, it’s also possible, but since you’re not using the requested language/framework,
this module will not be considered valid.
Before concluding, it’s important to note that some modules intentionally have strong
dependencies on others.
Along with the clear constraints in this subject (what you must or can’t do), there
are some areas that leave space for some choices. These choices can require justifications
during your evaluation. Exercise caution.
Take the time to contemplate the design of your application with your choices before
delving into the code – it’s crucial.
3
ft_transcendence Surprise.
Have a fun ! :)
4
Chapter III
Mandatory part
This project is about creating a website for the mighty Pong contest!
III.1 Overview
Thanks to your website, users will play Pong with others. You have to provide a nice
user interface and real-time multiplayer online games!
• The second part of this subject will offer additional modules that can replace or
complete the following rules.
In this Subject, certain words are highlighted in green. These represent technology
choices that will evolve over time. Pay close attention to the version of the subject.
5
ft_transcendence Surprise.
• The frontend should be developed using pure vanilla Javascript . However, this
requirement can be altered through the FrontEnd module.
• Your website must be a single-page application. The user should be able to use the
Back and Forward buttons of the browser.
• Your website must be compatible with the latest stable up-to-date version of
Google Chrome .
• The user should encounter no unhandled errors and no warnings when browsing the
website.
6
ft_transcendence Surprise.
III.3 Game
The main purpose of this website is to play Pong versus other players.
• Therefore, users must have the ability to participate in a live Pong game against
another player directly on the website. Both players will use the same keyboard.
The Remote players module can enhance this functionality with remote players.
• A player must be able to play against another player, but it should also be possible
to propose a tournament. This tournament will consist of multiple players who
can take turns playing against each other. You have flexibility in how you implement
the tournament, but it must clearly display who is playing against whom and the
order of the players.
• All players must adhere to the same rules, which includes having identical paddle
speed. This requirement also applies when using AI; the AI must exhibit the same
speed as a regular player.
• The game itself must be developed in accordance with the default frontend con-
straints (as outlined above), or you may choose to utilize the FrontEnd module,
or you have the option to override it with the Graphics module. While the visual
aesthetics can vary, it must still capture the essence of the original Pong (1972).
7
ft_transcendence Surprise.
• You must implement some form of validation for forms and any user input, either
within the base page if no backend is used or on the server side if a backend is
employed.
• Regardless of whether you choose to implement the JWT Security module with
2FA, it’s crucial to prioritize the security of your website. For instance, if you opt
to create an API, ensure your routes are protected. Remember, even if you decide
not to use JWT tokens, securing the site remains essential.
8
Chapter IV
Modules
With a functional basic website in place, the next step is to choose modules for fur-
ther improvement.
9
ft_transcendence Surprise.
IV.1 Overview
• Web
• User Management
• AI-Algo
• Cybersecurity
• Devops
10
ft_transcendence Surprise.
• Graphics
• Accessibility
• Server-Side Pong
◦ Major module: Replacing Basic Pong with Server-Side Pong and Imple-
menting an API.
◦ Major module: Enabling Pong Gameplay via CLI against Web Users with
API Integration.
11
ft_transcendence Surprise.
IV.2 Web
These modules enable the integration of advanced web features into your Pong game.
You can create the backend without using the constraints of this
module by using the default language/framework (see above in the
mandatory part). However, this module will only be valid if you
follow its requirements.
12
ft_transcendence Surprise.
13
ft_transcendence Surprise.
This major module aims to get a remote user authentication, providing users with
a secure and convenient way to access the web application.
14
ft_transcendence Surprise.
• Major module: Add Another Game with User History and Matchmaking.
In this major module, the objective is to introduce a new game, distinct from Pong,
and incorporate features such as user history tracking and matchmaking. Key
features and goals include:
◦ Develop a new, engaging game to diversify the platform’s offerings and enter-
tain users.
◦ Implement user history tracking to record and display individual user’s game-
play statistics.
◦ Create a matchmaking system to allow users to find opponents and participate
in fair and balanced matches.
◦ Ensure that user game history and matchmaking data are stored securely and
remain up-to-date.
◦ Optimize the performance and responsiveness of the new game to provide an
enjoyable user experience. Regularly update and maintain the game to fix
bugs, add new features, and enhance gameplay.
This major module aims to expand your platform by introducing a new game,
enhancing user engagement with gameplay history, and facilitating matchmaking
for an enjoyable gaming experience.
15
ft_transcendence Surprise.
This module aims to give users the flexibility to tailor their gaming experience
across all available games by providing a variety of customization options while
also offering a default version for those who prefer a straightforward gameplay
experience.
16
ft_transcendence Surprise.
IV.5 AI-Algo
These modules serve to introduce data-driven elements to the project, with the major
module introducing an AI opponent for enhanced gameplay, and the minor module fo-
cusing on user and game statistics dashboards, offering users a minimalistic yet insightful
glimpse into their gaming experiences.
This major module aims to enhance the game by introducing an AI opponent that
adds excitement and competitiveness without relying on the A* algorithm.
◦ Create user-friendly dashboards that provide users with insights into their own
gaming statistics.
17
ft_transcendence Surprise.
This minor module aims to empower users with the ability to monitor their gaming
statistics and game session details through user-friendly dashboards, providing a
comprehensive view of their gaming experience.
18
ft_transcendence Surprise.
IV.6 Cybersecurity
These cybersecurity modules are designed to bolster the security posture of the project,
with the major module focusing on robust protection through Web Application Firewall
(WAF) and ModSecurity configurations and HashiCorp Vault for secure secrets manage-
ment. The minor modules complement this effort by adding options for GDPR com-
pliance, user data anonymization, a ccount deletion, two-factor authentication (2FA),
and JSON Web Tokens (JWT), collectively ensuring the project’s commitment to data
protection, privacy, and authentication security.
This major module aims to bolster the project’s security infrastructure by imple-
menting robust security measures, including WAF/ModSecurity for web application
protection and HashiCorp Vault for secrets management to ensure a safe and secure
environment.
This minor module aims to enhance user privacy and data protection by offering
GDPR compliance options that empower users to control their personal information
and exercise their data privacy rights within the system.
If you are not familiar with the General Data Protection Regulation (GDPR), it
19
ft_transcendence Surprise.
If you are unfamiliar with the GDPR, please take the time to visit the provided link
and familiarize yourself with the regulations before proceeding with this project.
This major module aims to strengthen user account security by offering Two-Factor
Authentication (2FA) and enhancing authentication and authorization through the
use of JSON Web Tokens (JWT).
1
https://commission.europa.eu/law/law-topic/data-protection/data-protection-eu_en
20
ft_transcendence Surprise.
IV.7 Devops
These modules collectively focus on enhancing the project’s infrastructure and architec-
ture, with the major modules addressing infrastructure setup for efficient log management
using ELK (Elasticsearch, Logstash, Kibana), designing the backend as microservices
for flexibility and scalability, and implementing Prometheus/Grafana for comprehensive
system monitoring.
◦ Deploy Elasticsearch to efficiently store and index log data, making it easily
searchable and accessible.
◦ Configure Logstash to collect, process, and transform log data from various
sources and send it to Elasticsearch.
◦ Set up Kibana for visualizing log data, creating dashboards, and generating
insights from log events.
◦ Define data retention and archiving policies to manage the storage of log data
effectively.
◦ Implement security measures to protect log data and access to the ELK stack
components.
This major module aims to establish a powerful log management and analysis sys-
tem using the ELK stack, enabling effective troubleshooting, monitoring, and in-
sights into the system’s operation and performance.
21
ft_transcendence Surprise.
This major module aims to enhance the system’s architecture by adopting a mi-
croservices design approach, enabling greater flexibility, scalability, and maintain-
ability of the backend components.
22
ft_transcendence Surprise.
IV.8 Gaming
These modules are designed to enhance the gamification aspect of the project, with the
major module introducing new games, user history tracking, and matchmaking, while the
minor module focuses on providing customization options across all available games.
• Major module: Add Another Game with User History and Matchmaking.
In this major module, the objective is to introduce a new game, distinct from Pong,
and incorporate features such as user history tracking and matchmaking. Key
features and goals include:
◦ Develop a new, engaging game to diversify the platform’s offerings and enter-
tain users.
◦ Implement user history tracking to record and display individual user’s game-
play statistics.
◦ Create a matchmaking system to allow users to find opponents and participate
in fair and balanced matches.
◦ Ensure that user game history and matchmaking data are stored securely and
remain up-to-date.
◦ Optimize the performance and responsiveness of the new game to provide an
enjoyable user experience. Regularly update and maintain the game to fix
bugs, add new features, and enhance gameplay.
This major module aims to expand your platform by introducing a new game,
enhancing user engagement with gameplay history, and facilitating matchmaking
for an enjoyable gaming experience.
• Minor module: Game Customization Options.
In this minor module, the goal is to provide customization options for all available
games on the platform. Key features and objectives include:
This module aims to give users the flexibility to tailor their gaming experience
across all available games by providing a variety of customization options while
also offering a default version for those who prefer a straightforward gameplay
experience.
23
ft_transcendence Surprise.
IV.9 Graphics
• Major module: Implementing Advanced 3D Techniques
This major module, known as "Graphics," is focused on enhancing the visual aspects
of the Pong game. It introduces the utilization of advanced 3D techniques to create
a more immersive gaming experience. Specifically, the Pong game will be developed
using ThreeJS/WebGL to achieve the desired visual effects.
This major module aims to revolutionize the Pong game’s visual elements by intro-
ducing advanced 3D techniques. Through the utilization of ThreeJS/WebGL , we
aspire to provide players with an immersive and visually stunning gaming experi-
ence.
24
ft_transcendence Surprise.
IV.10 Accessibility
These modules are designed to enhance the accessibility of our web application, with a
focus on ensuring compatibility across all devices, expanding browser support, offering
multi-language capabilities, providing accessibility features for visually impaired users,
and integrating Server-Side Rendering (SSR) for improved performance and user experi-
ence.
◦ Make sure the website is responsive, adapting to different screen sizes and ori-
entations, ensuring a consistent user experience on desktops, laptops, tablets,
and smartphones.
◦ Ensure that users can easily navigate and interact with the website using
different input methods, such as touchscreens, keyboards, and mice, depending
on the device they are using.
This module aims to provide a consistent and user-friendly experience on all devices,
maximizing accessibility and user satisfaction.
This minor module aims to broaden the accessibility of the web application by
supporting an additional web browser, providing users with more choices for their
browsing experience.
25
ft_transcendence Surprise.
◦ Provide a language switcher or selector that allows users to easily change the
website’s language based on their preferences.
◦ Translate essential website content, such as navigation menus, headings, and
key information, into the supported languages.
◦ Ensure that users can navigate and interact with the website seamlessly, re-
gardless of the selected language.
◦ Consider using language packs or localization libraries to simplify the transla-
tion process and maintain consistency across different languages.
◦ Allow users to set their preferred language as a default choice for subsequent
visits to the website.
This minor module aims to enhance the accessibility and inclusivity of your website
by offering content in multiple languages, making it more user-friendly for a diverse
international audience.
• Minor module: Add accessibility for Visually Impaired Users.
In this minor module, the goal is to make your website more accessible for visually
impaired users. Key features include:
This module aims to improve the website’s usability for individuals with visual
impairments and ensure compliance with accessibility standards.
• Minor module: Server-Side Rendering (SSR) Integration.
In this minor module, the focus is on integrating Server-Side Rendering (SSR)
to enhance the performance and user experience of your website. Key objectives
include:
◦ Implement SSR to improve the website’s loading speed and overall perfor-
mance.
◦ Ensure that content is pre-rendered on the server and delivered to users’
browsers for faster initial page loads.
◦ Optimize SEO by providing search engines with pre-rendered HTML content.
◦ Maintain a consistent user experience while benefiting from the advantages of
SSR.
This module aims to boost website performance and SEO by integrating Server-Side
Rendering for faster page loads and improved user experience.
26
ft_transcendence Surprise.
◦ Develop server-side logic for the Pong game to handle gameplay, ball move-
ment, scoring, and player interactions.
◦ Create an API that exposes the necessary resources and endpoints to interact
with the Pong game, allowing partial usage of the game via the Command-Line
Interface (CLI) and web interface.
◦ Design and implement the API endpoints to support game initialization, player
controls, and game state updates.
◦ Ensure that the server-side Pong game is responsive, providing an engaging
and enjoyable gaming experience.
◦ Integrate the server-side Pong game with the web application, allowing users
to play the game directly on the website.
This major module aims to elevate the Pong game by migrating it to the server
side, enabling interaction through both a web interface and CLI while offering an
API for easy access to game resources and features.
• Major module: Enabling Pong Gameplay via CLI against Web Users with API
Integration.
In this major module, the goal is to develop a Command-Line Interface (CLI) that
allows users to play Pong against players using the web version of the game. The
CLI should connect to the web application seamlessly, enabling CLI users to join
and interact with web players. Key features and objectives include:
◦ Create a robust CLI application that replicates the Pong gameplay experience
available on the website, providing CLI users with the ability to initiate and
participate in Pong matches.
◦ Utilize the API to establish communication between the CLI and the web
application, enabling CLI users to connect to the site and interact with web
players.
◦ Develop a user authentication mechanism within the CLI, allowing CLI users
to log in to the web application securely.
◦ Implement real-time synchronization between the CLI and web users, ensuring
that gameplay interactions are seamless and consistent.
◦ Enable CLI users to join and create Pong matches with web players, facilitating
cross-platform gameplay.
27
ft_transcendence Surprise.
This major module aims to enhance the Pong gaming experience by creating a CLI
that seamlessly connects CLI users to web players through API integration, offering
a unified and interactive gameplay environment.
28
Chapter V
Bonus part
For this project, the bonus section is designed to be straightforward. You are required to
include more modules.
29
Chapter VI
Turn in your assignment in your Git repository as usual. Only the work inside your
repository will be evaluated during the defense. You are encouraged to double-check the
names of your files to ensure they are correct.
30
ft_transcendence Surprise.
10001
16997B3EAAA8F965C2C99AD2D1E7C1AD78B53E5AF3CCB21228CB747F6
F9717A4824FFC9EF55AE6E3DC3045320031A4899E0B7A5368BDC2A4B9246
F40E923432A3437CB5703BA745EB9
53616C7465645F5F549209D53E8A1D597DFEF0A034A52CF06BF4132EA61FE
0C907AB090B88EF6E0DF3250E47AB70367C522E351BCD6FE2683B44409CFC
0A0A81D31546431B43D4CE504A554660E0806598302B8F776A1B72407A813
C22D077BADE4F866A7FCF426864823BC25833264770351BC0EF3CD8C47930
FDC58CBA86B49C5445ECD9C840D1C737D17B8D4A5CA935994847DED79443B
3B79475AB2C9506F2C94E9FECC933D1689714AE02FE3C55F278E502E1B806
D7B917906C25612B25700502525825CDC5D23F3856BD9B95F2EC6CA89CBC6
ED26011D60D7CB6EAD304924717BCC06DC297BE7E9B29E7185B23614AB59C
66E2B254C24D5DD6FE54133D4C676F88ED318516F7795B15404A4C014CC12
E5BEAF0A3CBE66F9E1A778AD1F06DA87230D1127DB08E11086F16B1B09905
C31B41262725E8CDD5B18CFB03C6A5CDBF72674C4E76F6FB1851AB7466C5A
4
31