Category | Supported | Unsupported |
---|---|---|
Majors | 9 | 7 |
Minors | 4 | 7 |
Done/Partially_Done | In Progress |
---|---|
9 | 7 |
Feature | Module | Major/Minor | Supported | Progress |
---|---|---|---|---|
Mandatory Part | ||||
Overview | ✅ | Done | ||
Minimal technical requirement | ✅ | Done | ||
Game | ✅ | In progress | ||
Security Concerns and Recommendations | ✅ | In progress | ||
Web | ||||
Use a Framework as backend. | Major | ✅ | Done | |
Use a database for the backend. | Minor | ✅ | Done | |
User Management | ||||
Standard user management, authentication, users across tournaments. | Major | ✅ | In progress | |
Implementing a remote authentication. | Major | ✅ | Done | |
Gaming | ||||
Gameplay and user experience | ||||
Remote players | Major | ✅ | Done | |
Game Customization Options. | Minor | ✅ | In progress | |
Live chat. | Major | ✅ | In progress | |
AI-Algo | ||||
Introduce an AI Opponent. | Major | ✅ | In progress | |
User and Game Stats Dashboards | Minor | ✅ | In progress | |
Cybersecurity | ||||
Implement Two-Factor Authentication (2FA) and JWT. | Major | ✅ | Done | |
Devops | ||||
Infrastructure Setup for Log Management. | Major | ✅ | Done | |
Monitoring system. | Minor | ✅ | In progress | |
Graphics | ||||
Use of advanced 3D techniques. | Major | ✅ | Done |
- Project Description: Creating a website for the mighty Pong contest!
- Prohibition of Libraries/Frameworks/Tools: Strictly prohibited to replace job functions.
- Authorized Third-Party Software: Each part of the subject will explicitly present authorized third-party software.
- Use of Tools to Simplify Actions: Allowed and recommended to use anything possible to simplify certain actions.
- Justification of Tools/Resources: Any tools or resources utilized must be justified.
- Simplification vs. Completion: Simplifying does not equate to completing work.
Technology stack | Requirement | Overriden |
---|---|---|
Backend | Pure Ruby | Framework module |
Frontend | Pure vanilla Javascript | Framework module |
Database | Database module |
- Website must be a single-page application. use the Back and Forward buttons of the browser.
- Compatible with the latest stable up-to-date version of Google Chrome .
- No unhandled errors and no warnings when browsing the website.
- Everything must be launched with a single command line (e.g docker-compose up --build)
Requirement | Description | Implementation |
---|---|---|
Live Pong game | Users play Pong against each other directly on the website using the same keyboard. | Stack: FrontEnd module |
Remote players module | Enhances gameplay by enabling players to compete against remote opponents. | Optional: Remote players module |
Tournament system | Allows players to compete in a tournament format, displaying matchups and player order clearly. | Stack: Backend module |
Registration system | Players input aliases at the start of each tournament. Aliases reset for new tournaments. | Stack: Backend module |
Standard User Management module | Provides flexibility in managing user registration and aliases. | Optional: Standard User Management module |
Matchmaking system | Organizes matchups for participants and announces next fights. | Stack: Backend module |
Adherence to rules | All players, including AI, must adhere to the same rules, including identical paddle speed. | Stack: Backend module |
Frontend development | Develop game within default frontend constraints or utilize FrontEnd module. | Stack: FrontEnd module |
Override option with Graphics module | Provides option to override default frontend with Graphics module for enhanced visual aesthetics. | Optional: Graphics module |
Prohibition on third-party tools | Prohibits use of libraries or frameworks that replace necessary functions. Justification required. | Strictly Prohibited |
Simplification with justified tools/resources | Recommended to use tools/resources for simplification, but they must be justified. | Allowed and recommended; justification required |
Security Concern | Recommendation |
---|---|
Password storage | Hash passwords before storing them in the database. Use a strong password hashing algorithm. |
Protection against SQL injections/XSS | Implement measures to sanitize and validate user input to prevent SQL injections and Cross-Site Scripting (XSS). |
HTTPS connection | Enable HTTPS connection for all aspects of the website. Utilize wss instead of ws for WebSocket connections. |
Form and user input validation | Implement validation for forms and any user input, either on the client-side within the base page or on the server-side if a backend is employed. |
- you’ve accomplished 25% of the project, congratulations!
- To attain 100% project completion, a minimum of 7 major modules is required
- Two Minor Modules are equivalent to one Major Module.
- Framework: Django
- Constraints: Utilize Django for backend development.
- Toolkit: Bootstrap
- Constraints: Utilize Bootstrap for front-end development.
- Database: PostgreSQL
- Constraints: Utilize PostgreSQL for backend database instances. Ensures data consistency and compatibility.
- Blockchain: Ethereum
- Smart Contract Language: Solidity
- Integration: Seamlessly integrate Ethereum blockchain into the Pong website.
- Blockchain Integration: Secure and immutable storage of tournament scores.
- Smart Contracts: Develop Solidity smart contracts for score recording, management, and retrieval.
- Testing Blockchain: Utilize a testing blockchain environment (e.g., Ganache) for development and testing.
- Interoperability: Potential dependencies on Backend Framework module for integrating blockchain functionality.
- Features:
- Secure user subscription.
- Secure user login.
- Selection of unique display names for tournaments.
- User information update functionality.
- Avatar upload with default option.
- Friend addition and online status viewing.
- User profile stats display (e.g., wins and losses).
- Match History for 1v1 games with dates and details.
- Authentication System: OAuth 2.0 with 42
- Objectives:
- Integrate OAuth 2.0 authentication system for secure sign-in.
- Obtain necessary credentials and permissions from the authority.
- Implement user-friendly login and authorization flows adhering to best practices.
- Ensure secure exchange of authentication tokens and user information.
- Note: Management of duplicate usernames/emails is at the discretion of the developer, with justification required for the decision.
- Objectives:
- Description: Allows two distant players to access the same website and play the same Pong game. Consider network issues like disconnection or lag for the best user experience.
- Description: Enables gameplay with more than two players, each having live control. Consider integrating the Remote Players module for distant players. Define gameplay mechanics for 3 or more players, such as playing on a squared board.
- Description: Introduces a new game besides Pong, incorporating user history tracking and matchmaking features.
- Key Features:
- Develop a new engaging game to diversify the platform's offerings.
- Implement user history tracking and display individual gameplay statistics.
- Create a matchmaking system for fair and balanced matches.
- Ensure secure storage of user game history and matchmaking data.
- Optimize game performance and responsiveness for an enjoyable user experience.
- Description: Provides customization options for all available games on the platform.
- Key Features:
- Offer customization features like power-ups, attacks, or different maps.
- Allow users to choose a default version of the game for a simpler experience.
- Ensure customization options are available and applicable to all games.
- Implement user-friendly settings menus for adjusting game parameters.
- Maintain consistency in customization features across all games.
- Description: Implements a chat system for users with various functionalities.
- Key Features:
- Allow users to send direct messages to other users.
- Enable user blocking to stop receiving messages from blocked accounts.
- Provide the ability to invite other users to play Pong through the chat interface.
- Integrate tournament system notifications for upcoming games.
- Allow access to other players' profiles through the chat interface.
- Objective: Incorporate an AI player into the game without using the A* algorithm.
- Features:
- Develop a challenging AI opponent that simulates human behavior.
- Implement AI logic for intelligent and strategic moves.
- Utilize power-ups if Game customization options module is implemented.
- Explore alternative algorithms for AI decision-making.
- Ensure adaptability to different gameplay scenarios and user interactions.
- Attention: AI must be capable of winning occasionally; creating an AI that does nothing is prohibited.
- Goal: Introduce user-friendly dashboards displaying statistics for individual users and game sessions.
- Features:
- Create separate dashboards for user and game session statistics.
- Implement intuitive and informative user interfaces.
- Utilize data visualization techniques such as charts and graphs.
- Allow users to access and explore their gaming history and performance metrics.
- Additional metrics can be added as deemed useful.
Module Type | Description | Key Features |
---|---|---|
Major | Implement WAF/ModSecurity with Hardened Configuration and HashiCorp Vault for Secrets Management | - Configure and deploy a Web Application Firewall (WAF) and ModSecurity with a strict and secure configuration. - Integrate HashiCorp Vault for secure secrets management. |
Minor | GDPR Compliance Options with User Anonymization, Local Data Management, and Account Deletion | - Implement GDPR-compliant features for user data privacy rights. - Enable users to request anonymization of their personal data. - Provide tools for users to manage their local data and request account deletion. |
Major | Implement Two-Factor Authentication (2FA) and JWT | - Introduce Two-Factor Authentication (2FA) for enhanced security. - Utilize JSON Web Tokens (JWT) for secure authentication and authorization. - Offer a user-friendly setup process for enabling 2FA. |
Module Type | Description | Key Features |
---|---|---|
Major | Infrastructure Setup with ELK (Elasticsearch, Logstash, Kibana) for Log Management | - Deploy Elasticsearch for efficient log data storage and indexing. - Configure Logstash to collect, process, and transform log data. - Set up Kibana for log data visualization and insights. - Define data retention policies and implement security measures. |
Minor | Monitoring System with Prometheus and Grafana | - Deploy Prometheus for monitoring and alerting. - Configure Grafana for custom dashboards and visualizations. - Set up alerting rules and ensure proper data retention. - Implement secure authentication and access control. |
Major | Designing the Backend as Microservices | - Divide backend into microservices for flexibility and scalability. - Define clear boundaries and interfaces between microservices. - Implement communication mechanisms for data exchange. - Ensure each microservice is responsible for a single, well-defined task. |
- Objective: Introduce a new game, implement user history tracking, and create a matchmaking system.
- Key Features:
- Develop a new game to diversify the platform’s offerings.
- Implement user history tracking for individual gameplay statistics.
- Create a matchmaking system for fair and balanced matches.
- Ensure secure storage and up-to-date data for user game history and matchmaking.
- Optimize game performance and responsiveness for an enjoyable user experience.
- Goal: Provide customization options for all available games on the platform.
- Key Features:
- Offer customization features like power-ups, attacks, or different maps.
- Allow users to choose a default game version for a simpler experience.
- Ensure customization options are available for all games.
- Implement user-friendly settings menus for adjusting game parameters.
- Maintain consistency in customization features across all games for a unified user experience.
- Objective: Enhance the visual aspects of the Pong game using advanced 3D techniques.
- Key Features:
- Implement advanced 3D graphics techniques to elevate the visual quality of the Pong game.
- Utilize ThreeJS/WebGL technology to create stunning visual effects.
- Enhance gameplay experience with visually engaging and captivating elements.
- Ensure compatibility and optimal performance by integrating ThreeJS/WebGL.
Module | Type | Focus | Key Features and Objectives |
---|---|---|---|
Support on all devices | Minor | Ensuring website compatibility across devices | - Responsive design for various screen sizes and orientations - Easy navigation with different input methods |
Expanding Browser Compatibility | Minor | Enhancing compatibility with additional web browsers | - Extend browser support - Thorough testing and optimization - Address compatibility issues |
Multiple language support | Minor | Supporting multiple languages for diverse users | - Implement support for at least three languages - Provide language switcher - Translate essential content |
Accessibility for Visually Impaired Users | Minor | Improving accessibility for visually impaired users | - Support for screen readers and assistive technologies - Descriptive alt text for images - High-contrast color scheme |
Server-Side Rendering (SSR) Integration | Minor | Integrating SSR for improved performance and UX | - Implement SSR for faster loading - Pre-render content for SEO optimization |
Module | Type | Focus | Key Features and Objectives |
---|---|---|---|
Replacing Basic Pong with Server-Side Pong and Implementing an API | Major | Migrating Pong game logic to server-side and creating an API | - Develop server-side logic for Pong game - Create API with necessary endpoints for game interaction |
Enabling Pong Gameplay via CLI against Web Users with API Integration | Major | Creating a CLI interface for playing Pong against web users | - Develop robust CLI application for Pong gameplay - Utilize API for CLI to web application communication - Implement user authentication mechanism in CLI for secure web application login |
-
Sign Up: This use case allows a new user to create an account on the website. Users will provide necessary information such as username, email, and password to register themselves.
-
Sign In: This use case enables registered users to authenticate themselves into the system by providing their username/email and password.
-
Dashboard: Upon signing in, users are directed to their dashboard. The dashboard provides an overview of the user's profile, activities, notifications, and other relevant information.
-
Play Game: Users can engage in playing games available on the website. This use case allows users to select and participate in various games, such as ping pong, available on the platform.
-
Chat: Users can communicate with each other through the chat feature provided by the website. This use case enables users to send and receive messages, emojis, and other media in real-time.
-
View Achievement: Users can view their achievements and milestones attained while using the website. This use case allows users to track their progress and accomplishments within the platform.
-
Logout: This use case allows users to securely log out of their account, ensuring the privacy and security of their data.
-
Add Friends: Users can expand their social network by adding other users as friends. This use case enables users to send and accept friend requests, thereby connecting with each other on the platform.
-
View Leaderboard: Users can view the leaderboard to see rankings based on various criteria, such as game scores, achievements, or activity levels. This use case provides users with a sense of competition and allows them to compare their performance with others.
-
Update Profile: Users can modify and update their profile information as needed. This use case allows users to edit their profile details, such as username, profile picture, bio, and other preferences.
-
Manage User Accounts: Admins can manage user accounts, including creating new accounts, updating user information, and deactivating or deleting accounts if necessary.
-
Manage Admin Functions: Admins have access to additional functionalities for managing the website, such as managing system settings, controlling access permissions, and handling reported issues or disputes.
Columns:
- achievement_id: Serial primary key.
- achiev_name: Character field for the name of the achievement.
- xp_to_get: Real number field indicating the experience points required to achieve this.
Columns:
- friendship_id: Serial primary key.
- user_from: Integer referencing user_id from the "Users" table.
- user_to: Integer referencing user_id from the "Users" table.
- is_accepted: Boolean indicating whether the friendship request is accepted.
Columns:
- user_one: Integer referencing user_id from the "Users" table.
- user_two: Integer referencing user_id from the "Users" table.
- message_content: Character field for the message content.
- message_date: Date field for the date of the message.
- message_direction: Character field indicating the direction of the message.
Columns:
- match_id: Serial primary key.
- user_one: Integer referencing user_id from the "Users" table.
- user_two: Integer referencing user_id from the "Users" table.
- score_user_one: Integer for the score of user one.
- score_user_two: Integer for the score of user two.
- match_start: Date field for the start date of the match.
- match_end: Date field for the end date of the match.
- tackle_user_one: Integer indicating tackles by user one.
- tackle_user_two: Integer indicating tackles by user two.
Columns:
- user_id: Serial primary key.
- first_name, last_name, nick_name: Character fields for user names.
- user_xp: Real number field for user experience points.
- image_url, cover_url: Character fields for image URLs.
- first_log, last_log: Date fields for the first and last login dates.
- is_log: Boolean indicating whether the user is logged in.
- is_two_fact: Boolean indicating whether two-factor authentication is enabled.
- two_fact_secret: Character field for the two-factor authentication secret.
- country, city: Character fields for user's country and city.
- password: Character field for user password.
Columns:
- user_id: Integer referencing user_id from the "Users" table.
- achievement_id: Integer referencing achievement_id from the "Achievements" table.
- achieve_date: Date field for the achievement date.
Columns:
- tournament_id: Serial primary key.
- tournament_name: Character field for the tournament name.
- tournament_start, tournament_end: Date fields for the start and end dates of the tournament.
Columns:
- tournament_id: Integer referencing tournament_id from the "Tournaments" table.
- match_id: Integer referencing match_id from the "Matches" table.
- tournament_round: Character field indicating the round of the tournament.