This project is a multiplayer Pong game built as a Single Page Application (SPA) with a microservice backend and real-time WebSocket gameplay.
It includes AI opponents, user management with 2FA and JWT, multi-language support, and a retro arcade look styled with Tailwind CSS.
- Backend Framework (Microservices) – API, WebSocket server, scalable with Docker.
- User Management – Registration, login, profiles, profile editing.
- Remote Player Multiplayer – Real-time gameplay via WebSocket.
- AI Opponent – for Solo matches.
- 2FA & JWT Authentication – Secure login and session handling.
- Server-Side Pong – Game logic and synchronization handled server-side.
- Tailwind CSS Integration – Retro Matrix arcade theme.
- SQLite Database – Persistence for users, stats, and matches.
- Stats Dashboards – View personal stats and match history.
- Multi-language Support – English, French, and Spanish.
- Cross-Browser Support – Optimized for major browsers.
- Left Player:
W/S - Right Player:
Arrow Up/Arrow Down
Controls are displayed next to player names during gameplay.
This project runs in Docker via make.
- Clone the repository:
git clone https://github.com/yourusername/transcendence.git
cd transcendence- Build and start the project:
make- Access the app at:
https://transcendence.42.fr
- Stop the containers:
make stop- Clean up (containers + volumes):
make prepare && make fclean• Frontend: TypeScript + Tailwind CSS (custom SPA router).
• Backend: Node.js (Fastify) + WebSocket.
• Database: SQLite.
• Authentication: JWT, Two-Factor Authentication (2FA).
• Deployment: Docker Compose + Nginx (with multi-instance scaling for the API and microservice architecture).
This project was developed in collaboration with:
- Philippe Deson
- Denise Erjavec