/ft_transcendence

Website for the mighty pong contest. With a chat system with moderators, real-time multiplayer online game .Built with NestJs, PostgreSQL and Angular.

Primary LanguageTypeScript

ft_transcendence: Pong Contest Website

Welcome to the Pong Contest website! This project is all about bringing the classic game of Pong to a modern, multiplayer online platform. Users can play Pong with others in real-time, connect with friends, create chat rooms, and enjoy a variety of features, all built using the latest web technologies.

Table of Contents

Introduction

The Pong Contest website allows users to play Pong with others in real-time. It provides a feature-rich user interface with integrated chat, authentication through the OAuth system of 42 intranet, two-factor authentication, friend management, and more. The backend is built with NestJS, the frontend with Angular, and the database is PostgreSQL (all in TypeScript).

Screenshots

Login page

alt text

Current user profile

alt text

Current user profile (friendships side)

alt text

User's Settings Interface

alt text

Activate the 2FA

alt text

Another user profile

alt text

Another user profile (this case a user that sent a friend request)

alt text

404 page (case user blocked or doesn't exist!)

alt text

Chat : DM Interface

alt text

Create Channels

alt text

Join Channels

alt text

Chat: Channels Interface

alt text

Invite To Channel Interface

alt text

Join Games Interface

alt text

Game play Interface

alt text

Features

Here are some of the key features of the Pong Contest website:

  • Real-time multiplayer Pong games.
  • User-friendly interface.
  • Integrated chat system.
  • OAuth login via the 42 intranet.
  • Two-factor authentication for added security.
  • Friend management to connect with other users.
  • Creation of public, private, or password-protected chat rooms (channels).
  • Direct messaging between users.
  • Matchmaking system for automatic game pairing.

Technologies Used

The Pong Contest website is built using the following technologies:

  • Backend: NestJS
  • Frontend: Angular
  • Database: PostgreSQL
  • Authentication: OAuth system of 42 intranet
  • Two-Factor Authentication: Tested with google authenticator and authy
  • Real-time Communication: WebSockets

Getting Started

To run the Pong Contest website locally, follow these steps:

first : to run the project you'll need to add a .env File with this values :

ACCESS_TOKEN_SECRET='as the key says'
HOST='http://{localhost Or your ip}'
TOKEN_NAME='as the key says'
FORTY_TWO_APP_UID='as the key says'
FORTY_TWO_CALLBACK_URL='as the key says'
FORTY_TWO_APP_SECRET='as the key says'
POSTGRES_USER='just use the POSTGRES default user'
POSTGRES_PASSWORD='as the key says'
POSTGRES_DB='as the key says'

second :

docker-compose up --build || docker compose up --build

third :

launch browser: http://{your ip}:4200
&&
Enjoy your ride with up