Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/achrafelkhnissi/ft_transcendence

ft_transcendence is a web application platform for users to play Pong with others in real-time multiplayer online games. The project includes features such as user authentication, user profiles, a chat system, and game functionality.
https://github.com/achrafelkhnissi/ft_transcendence

1337 1337cursus 1337fil 1337school 42 42born2code 42cursus 42projects 42school transcendence

Last synced: about 1 month ago
JSON representation

ft_transcendence is a web application platform for users to play Pong with others in real-time multiplayer online games. The project includes features such as user authentication, user profiles, a chat system, and game functionality.

Awesome Lists containing this project

README

        

PongTime


How a server works


Project developed at 1337 Khouribga coding school.

Authors: @fathjami & @achrafelkhnissi & @zsarir


GitHub code size in bytes
Number of lines of code
Code language count
GitHub top language
GitHub last commit

---

## Table of Contents

- [Table of Contents](#table-of-contents)
- [Introduction](#introduction)
- [Authors](#authors)
- [Technologies](#technologies)
- [Features](#features)
- [Usage](#usage)
- [Screenshots](#screenshots)

## Introduction

PongTime is a simple web application platform that allow users to play classic ping-pong with other users in real-time.

## Authors

- [Fathiya Olatokunbo Jamia](https://github.com/fathjami) - Frontend & UX/UI Design
- [Achraf El Khnissi](https://twitter.com/ashrafelkhnissi) - Backend & DevOps
- [Zaineb Sarir](https://github.com/zsarir23) - Game (Frontend & Backend)

## Technologies

- Frontend: Next.js, Typescript, Tailwind CSS, Socket.io
- Backend:
- API: Nest.js
- Real-time communication: Socket.io
- Database: PostgreSQL
- ORM: Prisma
- Authentication: Passport.js
- 2FA: Twilio
- Infrastructure: Docker, Docker Compose
- Game: Phaser.js, Matter.js, Next.js, Nestjs

## Features

- [x] Real-time multiplayer game
- [x] User authentication
- [x] Friendship system
- [x] Notification system
- [x] Achievements
- [x] Search system
- [x] Two Factor Authentication (2FA)
- [x] Leaderboard
- [x] Private chat
- [x] Chat rooms (public, private, protected with a password)
- [x] User profile (avatar, stats, achievements, friends, etc.)

## Usage

1. Clone the repository

```sh
git clone [email protected]:achrafelkhnissi/ft_transcendence.git
```

2. In the `.env.example` file at the root of the project, fill in the environment variables and rename the file to `.env` \

Notes:

- Put your hostname or IP address in the `DOMAIN_NAME` variable
- In case of production build, set `NODE_ENV` to `production` and comment `backend` and `frontend` bind mounts volumes in `docker-compose.yml` file because those volumes are only needed for development because of hot-reloading.

3. Run the following command to start the project

```sh
make
```

4. Open your browser and go to `http://${DOMAIN_NAME}:${NEXT_PORT}` to access the application and `http://${DOMAIN_NAME}:${NEXT_PORT}/api` to access the API

- Change `${DOMAIN_NAME}` and `${NEST_PORT}` with your environment variables set in the `.env` file

---

## Screenshots

- Dashboard


How a server works

- Profile


How a server works

- Messages


How a server works

- Game Invite


How a server works

- Game


How a server works

- Game win


How a server works