FT Transcendence 2025
FT Transcendence 2025
Surprise.
Summary:
This project involves undertaking tasks you have never done before.
Remember the beginning of your journey in computer science.
Look at you now; it’s time to shine!
Version: 16.0
Contents
I Preamble 2
II Objectives 3
IV Modules 8
IV.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
IV.2 Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
IV.3 User Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
IV.4 Gameplay and user experience . . . . . . . . . . . . . . . . . . . . . . 14
IV.5 AI-Algo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
IV.6 Cybersecurity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
IV.7 Devops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
IV.8 Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
IV.9 Accessibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
IV.10 Server-Side Pong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
V Bonus part 27
1
Chapter I
Preamble
2
Chapter II
Objectives
As you are reaching the end of your Common Core, you have developed strong adap-
tation and problem-solving skills. This project will confront you with -maybe- unknown
technologies, intentionally. Once again, you will have to adapt, discover, explore, exper-
iment to create the expected software.
The project includes a mandatory part and a series of modules on various topics, as
detailed below in this subject. You will be able to choose the modules you want among
a large list, but each module and mandatory element contains technical constraints you
cannot bypass. So you can select the topics you like, but not technologies you like. This
is a deliberate pedagogical choice.
This project is not intended to be a portfolio for an incoming internship or other pro-
fessional experience. Its purpose is to reveal your ability to become acquainted with and
complete a complex task using an unfamiliar technology. This situation will inevitably
be faced during your career, and we aim to develop your self-confidence in front of such
situations.
Especially on this big and long project, we encourage you to carefully read the en-
tire subject, consider several possible strategies, think about your design, before starting
coding anything! Some modules may depend on others, some modules may conflict with
others. Ft_transcendence will bring many doubts and requires a lot of difficult decisions!
Act wisely :-)
Also, this project is definitely a long run, and a wrong path will lead you to a huge loss
of time. Your project management and team management choices will strongly impact
your timeline and results. Many approaches and tools exist to support you on these topics.
3
Chapter III
Mandatory part
This project is about creating a website for the mighty Pong contest!
III.1 Overview
Your software will offer a nice user interface and real-time multiplayer capabilities allowing
to play Pong with all your friends!
• At first, your project needs to adhere to the mandatory guidelines as a minimum
requirement (see next section), which will represent only a small portion to the final
grade.
• The second part of this subject will offer additional modules that can replace or
complement the mandatory part.
In this subject, you will face words that are highlighted in green. They represent
technology choices that will evolve over time. Be sure to pay close attention to the
version of the subject.
4
ft_transcendence Surprise.
• The frontend should be developed using Typescript as base code. However, this
requirement can be modified 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
Mozilla Firefox . Of course, it can be compatible with other web browsers!
• The user should encounter no unhandled errors or warnings when browsing the
website.
• You must use Docker to run your website. Everything must be launched with a
single command line to run an autonomous container.
5
ft_transcendence Surprise.
III.3 Game
The main purpose of this website is to play Pong versus other players.
• Users must be able 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, and a tournament system should
also be available. 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 play.
• All players must adhere to the same rules, including having identical paddle speed.
This requirement also applies when using AI; the AI must exhibit the same speed
as a regular player.
• The game must adhere to the default frontend constraints (as outlined above), or
you may choose to use the FrontEnd module, or override it with the Graphics
module. While the visual aesthetics can vary, the game must still capture the
essence of the original Pong (1972).
6
ft_transcendence Surprise.
• You must implement validation mechanisms for forms and any user input, either on
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 essential to prioritize the security of your website. For instance, if you
choose to create an API, ensure your routes are protected. Even if you decide not
to use JWT tokens, securing the site remains critical.
7
Chapter IV
Modules
With a functional basic website in place, the next step is to choose modules for fur-
ther improvement.
8
ft_transcendence Surprise.
IV.1 Overview
• Web
• User Management
• AI-Algo
• Cybersecurity
• Devops
9
ft_transcendence Surprise.
• Graphics
• Accessibility
• Server-Side Pong
◦ Major module: Replace basic Pong with server-side Pong and implement an
API.
◦ Major module: Enabling Pong gameplay via CLI against web users with
API integration.
10
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 backend language (as specified above in
the mandatory part). However, this module will only be valid if you
follow its requirements.
11
ft_transcendence Surprise.
• Major module: Standard user management, authentication and users across tour-
naments.
12
ft_transcendence Surprise.
This major module aims to provide a remote user authentication, offering users a
secure and convenient way to access the web application.
13
ft_transcendence Surprise.
• Major module: Add another game with user history and matchmaking.
The goal of this major module, is to introduce a new game, distinct from Pong, and
incorporate features such as user history tracking and matchmaking. Key features
and objectives 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 users’ 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.
14
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.
15
ft_transcendence Surprise.
IV.5 AI-Algo
These modules serve to introduce data-driven elements to the project. The major module
introduces an AI opponent for enhanced gameplay, while the minor module focuses on
user and game statistics dashboards, offering users a minimalistic yet insightful glimpse
into their gaming experiences.
• Major module: Introduce an AI opponent.
In this major module, the objective is to incorporate an AI player into the game.
Notably, the use of the A* algorithm is not permitted for this task. Key features
and goals include:
You will need to explain in detail how your AI works during your
evaluation. Creating an AI that does nothing is strictly prohibited;
it must have the capability to win occasionally.
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
gaming statistics.
16
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.
17
ft_transcendence Surprise.
IV.6 Cybersecurity
These cybersecurity modules are designed to enhance the security posture of the project.
The major module focuses on robust protection through Web Application Firewall (WAF)
and ModSecurity configurations, as well as HashiCorp Vault for secure secrets manage-
ment. The minor modules complement this effort by adding features for GDPR com-
pliance, user data anonymization, account 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.
• Minor module: GDPR compliance options with user anonymization, local data
management, and account deletion.
The goal of this minor module is to introduce GDPR compliance options that allow
users to exercise their data privacy rights. Key features and objectives include:
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
18
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
19
ft_transcendence Surprise.
IV.7 Devops
These modules focus on enhancing the project’s infrastructure and architecture. The
major modules address infrastructure setup for efficient log management using ELK
(Elasticsearch, Logstash, Kibana), designing the backend as microservices for flexibil-
ity and scalability, and implementing Prometheus/Grafana for comprehensive system
monitoring.
◦ Deploy Elasticsearch to efficiently store and index log data, ensuring it is easily
searchable and accessible.
◦ Configure Logstash to collect, process, and transform log data from various
sources, sending 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 log data storage effec-
tively.
◦ 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.
20
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.
21
ft_transcendence Surprise.
IV.8 Graphics
• Major module: Implementing Advanced 3D Techniques
This major module,"Graphics," focuses on enhancing the visual aspects of the Pong
game. It introduces the use of advanced 3D techniques to create a more immersive
gaming experience. Specifically, the Pong game will be developed using Babylon.js
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 use of Babylon.js , we aim to provide
players with an immersive and visually stunning gaming experience.
22
ft_transcendence Surprise.
IV.9 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.
◦ Ensure the website is responsive, adapting to different screen sizes and orien-
tations, providing 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.
23
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 the default for subsequent visits.
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.
This module aims to improve the website’s usability for individuals with visual
impairments and ensure compliance with accessibility standards.
◦ 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.
24
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.
25
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.
26
Chapter V
Bonus part
For this project, the bonus section is designed to be straightforward. You are required to
include additional modules.
27
Chapter VI
submit 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.
28
ft_transcendence Surprise.
10001
16997B3EAAA8F965C2C99AD2D1E7C1AD78B53E5AF3CCB21228CB747F6
F9717A4824FFC9EF55AE6E3DC3045320031A4899E0B7A5368BDC2A4B9246
F40E923432A3437CB5703BA745EB9
53616C7465645F5F549209D53E8A1D597DFEF0A034A52CF06BF4132EA61FE
0C907AB090B88EF6E0DF3250E47AB70367C522E351BCD6FE2683B44409CFC
0A0A81D31546431B43D4CE504A554660E0806598302B8F776A1B72407A813
C22D077BADE4F866A7FCF426864823BC25833264770351BC0EF3CD8C47930
FDC58CBA86B49C5445ECD9C840D1C737D17B8D4A5CA935994847DED79443B
3B79475AB2C9506F2C94E9FECC933D1689714AE02FE3C55F278E502E1B806
D7B917906C25612B25700502525825CDC5D23F3856BD9B95F2EC6CA89CBC6
ED26011D60D7CB6EAD304924717BCC06DC297BE7E9B29E7185B23614AB59C
66E2B254C24D5DD6FE54133D4C676F88ED318516F7795B15404A4C014CC12
E5BEAF0A3CBE66F9E1A778AD1F06DA87230D1127DB08E11086F16B1B09905
C31B41262725E8CDD5B18CFB03C6A5CDBF72674C4E76F6FB1851AB7466C5A
4
29