• [x] Major module: Use a framework to build the backend.

    • [x] In this major module, you are required to use a specific web framework for backend development: Fastify with Node.js
  • [ ] Major module: Replace Basic Pong with Server-Side Pong and Implementing an API.

    • [ ] Develop server-side logic for the Pong game to handle gameplay, ball move- ment, scoring, and player interactions.
    • [ ] Create an API that exposes the necessary resources and endpoints to interact with the Pong game, allowing partial usage of the game via the Command-Line Interface (CLI) and web interface.
    • [ ] Design and implement the API endpoints to support game initialization, player controls, and game state updates.
    • [ ] Ensure that the server-side Pong game is responsive, providing an engaging and enjoyable gaming experience.
    • [ ] Integrate the server-side Pong game with the web application, allowing users to play the game directly on the website.
  • [ ] Major module: Remote players

    • [ ] It should be possible for two players to play remotely. Each player is located on a separated computer, accessing the same website and playing the same Pong game.
      • Consider network issues, such as unexpected disconnections or lag. You must offer the best user experience possible.
  • [ ] Major module: Store the score of a tournament in the Blockchain.

    • [ ] Blockchain Integration: The primary goal of this module is to seamlessly in- tegrate blockchain technology, specifically Avalache , into the Pong website. This integration ensures the secure and immutable storage of tournament scores, providing players with a transparent and tamper-proof record of their gaming achievements.
    • [ ] Solidity Smart Contracts: To interact with the blockchain, we will develop colorboxtreasurebgSolidity smart contracts. These contracts will be responsi- ble for recording, managing, and retrieving tournament scores.
    • [ ] Testing Blockchain: As mentioned earlier, a testing blockchain will be used for development and testing purposes. This ensures that all blockchain-related functionalities are thoroughly validated without any risks associated with a live blockchain.
    • [ ] Interoperability: This module may have dependencies on other modules, par- ticularly the Backend Framework module. Integrating blockchain functionality might require adjustments in the backend to accommodate interactions with the blockchain.
  • [ ] Major module: Live Chat.

    • [x] The user should be able to send direct messages to other users.
    • [ ] The user should be able to block other users, preventing them from seeing any further messages from the blocked account.
    • [ ] The user should be able to invite other users to play a Pong game through the chat interface.
    • [ ] The tournament system should be able to notify users about the next game.
    • [ ] The user should be able to access other players’ profiles through the chat interface.
  • [ ] Major module: Implement Two-Factor Authentication (2FA) and JWT.

    • [ ] Implement Two-Factor Authentication (2FA) as an additional layer of security for user accounts, requiring users to provide a secondary verification method, such as a one-time code, in addition to their password.
    • [x] Utilize JSON Web Tokens (JWT) as a secure method for authentication and authorization, ensuring that user sessions and access to resources are managed securely.
    • [ ] Provide a user-friendly setup process for enabling 2FA, with options for SMS codes, authenticator apps, or email-based verification.
    • [x] Ensure that JWT tokens are issued and validated securely to prevent unau- thorized access to user accounts and sensitive data.
  • [x] Minor module: Use a framework or toolkit to build the front-end.

    • [x] Your frontend development must use the Tailwind CSS in addition of the Typescript, and nothing else.
  • [x] Minor module: Use a database for the backend -and more.

    • [x] The designated database for all DB instances in your project is SQLite This choice ensure data consistency and compatibility across all project components and may be a prerequisite for other modules, such as the backend Framework module.