In this project, we need to build a website that allows users to chat and play pong matches against each other.
This is a group project completed by Q. Li & R. Bakker & G. Bouwen & thimovandermeer.
Full details are included in the
ft_transcendence_subject.pdf
file. The main requirements include:
- Security concerns:
- Any password stored in your database must be
encrypted
- Your website must be protected against
SQL injections
- You must implement some kind of
server-side validation
for forms and any user input
- Any password stored in your database must be
- User Account:
- A user must log in using the
OAuth system of 42 intranet
- A user must be able to choose a
unique name
that will be displayed on the website - A user has several
victories
andlosses
and other stats - A user must have an
avatar
generated or uploaded by the user - A user must be able to activate a
2-factor authentication
- A user can add other users as
friends
, and see their current status
- A user must log in using the
- Chat:
- Users must be able to
create channels
public/private or protected by a password - Users must be able to
send direct messages
to other users - Users must be able to
block other user
and therefore they will not see their messages anymore - Through the chat interface users must be able to see
other players profiles
- Users must be able to
- Game:
- Be able to
play pong directly
on the website and live against another player. - There must be
a match-making system
, user can join a game queue and are automatically matched with another player.
- Be able to
- Programming language:
TypeScript
- Frontend library:
React
- Backend framework:
NestJS
- Database:
PostgreSQL
- Application management:
docker-compose
As this project runs with
docker-compose
, you need to install Docker before running the commands below.
$ git clone https://github.com/qingqingqingli/ft_transcendence.git
$ cd ft_transcendence
$ sh setup.sh
I have summarised all my learnings from this project in the Wiki: