Project developed at 1337 Khouribga coding school.
Authors: @fathjami & @achrafelkhnissi & @zsarir
PongTime is a simple web application platform that allow users to play classic ping-pong with other users in real-time.
- Fathiya Olatokunbo Jamia - Frontend & UX/UI Design
- Achraf El Khnissi - Backend & DevOps
- Zaineb Sarir - Game (Frontend & Backend)
- 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
- Real-time multiplayer game
- User authentication
- Friendship system
- Notification system
- Achievements
- Search system
- Two Factor Authentication (2FA)
- Leaderboard
- Private chat
- Chat rooms (public, private, protected with a password)
- User profile (avatar, stats, achievements, friends, etc.)
- Clone the repository
git clone git@github.com:achrafelkhnissi/ft_transcendence.git
-
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
toproduction
and commentbackend
andfrontend
bind mounts volumes indocker-compose.yml
file because those volumes are only needed for development because of hot-reloading.
- Run the following command to start the project
make
- Open your browser and go to
http://${DOMAIN_NAME}:${NEXT_PORT}
to access the application andhttp://${DOMAIN_NAME}:${NEXT_PORT}/api
to access the API
- Change
${DOMAIN_NAME}
and${NEST_PORT}
with your environment variables set in the.env
file
- Dashboard
- Profile
- Messages
- Game Invite
- Game
- Game win