This project was developed in collaboration with:
A huge thank you to each of you for your hard work, dedication, and invaluable contributions to ft_transcendence.
ft_transcendence is a web development project centered on creating a single-page application (SPA) that allows users to play the classic game Pong against each other. The project emphasizes modern web development practices, utilizing NestJS for the backend, a TypeScript framework for the frontend, and PostgreSQL for the database. The application will feature a user-friendly interface, real-time multiplayer capabilities, a chat system, and robust security measures.
- Develop a single-page application for playing Pong online.
- Implement real-time multiplayer functionality.
- Create a comprehensive user account system with OAuth, two-factor authentication, and user profiles.
- Integrate a chat system with features like public and private channels, direct messaging, and user blocking.
- Ensure the application adheres to high security standards.
- Backend: The backend must be developed using NestJS.
- Frontend: The frontend must be created using a TypeScript framework of choice.
- Database: PostgreSQL is required as the database management system.
- Compatibility: The application must be compatible with the latest stable versions of Google Chrome and one other web browser.
- Deployment: The entire application must be deployable via a single
docker-compose up --build
command, utilizing Docker in rootless mode for security.
- OAuth login via 42 intranet.
- Unique usernames and avatars.
- Two-factor authentication.
- Friend system with online status indicators.
- Display of user statistics and match history.
- Creation of public, private, and password-protected channels.
- Direct messaging between users.
- Blocking functionality.
- Channel administration capabilities including setting passwords, kicking, banning, and muting users.
- Integration with the game invitation system.
- Real-time Pong gameplay between users.
- Matchmaking system for automatic player pairing.
- Options for game customization (e.g., power-ups, different maps) while retaining a classic mode.
- Responsiveness to network issues to ensure a smooth user experience.
- Passwords must be hashed before storing.
- Protection against SQL injection attacks.
- Server-side validation of all forms and user inputs.
- Secure storage of credentials, API keys, and environment variables in a
.env
file, excluded from version control.