NHariman / transcendence

A single-page web app featuring a multiplayer Pong game. A collaborative 42/Codam project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

transcendence

transcendence is a 42/Codam fullstack web project about creating a single-page web application where users can play Pong against each other.
This is a collaborative project between Michelle Jiam, Niks Hariman, Nilo Van Winden, Sanne Albreghs, and Swaan Miller.

Pong game still

Content

Description

๐Ÿ“ Play Pong in real-time against other users and jostle for 1st place in the leaderboard to earn eternal glory as Pong Master! ๐Ÿ“

Features include:

  • Chatrooms ๐Ÿ’ฌ: users can create and join both public and private (password-protected) chatrooms, and also DM other users
  • Game by invite โœ‰๏ธ: users can invite specific users to a game of Pong via DM
  • Game matchmaking ๐Ÿค: users can enter a game queue to be matched automatically to other users looking to play a game
  • Authentication ๐Ÿ”’: users can log in using the 42 OAuth system and enable 2FA
  • User account customization ๐Ÿ–ผ๏ธ: users can change their player name and avatar
  • Friends ๐Ÿ‘ฏ: users can add other users as friends and see their status (online, offline, in a game)
  • Match history ๐Ÿ“’: user pages show last 10 games played
  • Leaderboard ๐Ÿ“ˆ: users go up and down in ranking after each win/loss
  • Achievements ๐Ÿ…: users can earn achievements
  • Blocking, banning, and muting ๐Ÿ”‡: users can block other users to stop seeing their messages in chatrooms; chatroom admins/owners can ban or mute users from chatrooms.

This is a full-stack single-page web application built using NestJS (backend), Vue 3 (frontend), PostgreSQL (database), and Docker (environment).

User page

Requirements

You can find the full list of project requirements here: Project Requirements

Demos

Sending a game challenge through DM

game_from_dm.mov

Reactive friends page

friend_page.mov

More demos

See more demos of features here: demos

Usage

Run

  1. Install and run Docker

  2. Run ./run.sh

    • NOTE: manually build with docker compose up --build
localhost:5173 Navigate here to see frontend from Vue + Vite
localhost:5050 Navigate here to see GUI for postgreSQL

Clean

run ./clean.sh and select a clean option

Prompt
1. clean this option will remove containers and delete images
2. clean all this option will additionally delete the volumes
  • NOTE: manually clean all with docker compose down --rmi all -v

Resources

General

Typescript

Vue 3

NestJS

TypeORM

PostgreSQL

Chat

About Us

Michelle Jiam - LinkedIn / Github
Niks Hariman - LinkedIn / Github
Nilo Van Winden - LinkedIn / Github
Sanne Albreghs - LinkedIn / Github
Swaan Miller - LinkedIn / Github

About

A single-page web app featuring a multiplayer Pong game. A collaborative 42/Codam project


Languages

Language:TypeScript 59.1%Language:Vue 38.2%Language:CSS 1.1%Language:Shell 0.9%Language:JavaScript 0.6%Language:Dockerfile 0.1%Language:HTML 0.1%