celeloup / 42_transcendence

:rocket: Pong Wars, a fun web app to play pong in space

Home Page:https://pong-wars.cyberduck.blog/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

💫 Pong Wars - ft_transcendence

ft_transcendence is 42 school's end of common core cursus project where you need to build a web app for the students to play a cool game of pong. Test Pong Wars here !

Our twist on the famous arcade game ? You can play in space ! Featuring its fun and colourful retro design, Pong Wars is a tribute to the old times, where pixels looked much bigger on our screens but where games were just as fun as today. Make some friends (or ennemies) by challenging them to a game of galactic pong.
You’re not a student of 42 ? No problem, use one of our ghost users to log in and have fun with everyone else !

Our stack

  • NestJS 8 (backend framework based on Node.js)
  • PostgreSQL
  • Swagger (API documentation)
  • Socket.io
  • ReactJS 17 (frontend framework)
  • Sass
  • p5.js

All our code is written in Typescript.

Usage & prerequisites

⚠️ Note that you will need 42 school API keys to run this project. ⚠️

If you don’t have access to the API, you can still visit Pong Wars here and log in as Ghosty or Casper, our ghost users.

To launch Pong Wars you will need Docker. Several .env.sample have been provided to show the required environnement variables.

# Build the app
make

# Stop the app
make down

# Clean
make clean

Features

Game

  • Live multiplayer Pong game made with p5.js and socket.io
  • Matchmaking system
  • Game customisation (3 different maps, adjust ball speed, number a goals, enable boots and power-ups …)
  • Spectator mode

Chat

  • Direct messages
  • Easy channel creation (public, private or protected by a password)
  • Ability to block other users
  • Moderation system (ban and mute)
  • Access to users’s profiles
  • Ability to send game request

User account

  • Students can log in via the school authentication API
  • Customisation of username (must be unique) and profile picture (generated automatically if none is provided)
  • Option to enable two-factor authentication
  • Friend list
  • Current status (online, offline, in game)
  • Statistics (rank, win rate, number of matches played …)
  • Match history
  • Achievements

Contribution

This beautiful project has been brought to you by :

@CyberDuck79 - Back-end developpement and deployment
@amartin-menadier - Back-end developpement
@jgonfroy42 - Back-end developpement
@celeloup - Design and front-end developpement
@cclaude42 - Front-end developpement

About

:rocket: Pong Wars, a fun web app to play pong in space

https://pong-wars.cyberduck.blog/


Languages

Language:TypeScript 79.3%Language:SCSS 19.1%Language:Shell 0.9%Language:Makefile 0.5%Language:HTML 0.1%Language:Dockerfile 0.1%