-
Component Description:
- Client: The web application built with React
- Amazon Cognito: for user authentication and authorization.
- Amazon API Gateway: To manage API requests from the frontend, it uses Cognito to authorize requests.
- AWS Lambda: Functions for handling quiz logic (joining quizzes, submitting answers, getting participants and quiz data, updating scores via WS).
- Amazon DynamoDB: A database to store quizzes, participants, WS connections.
-
Data Flow:
-
Technologies and Tools:
- Frontend
- Technology: React.js
- Justification: React is a popular JavaScript library for building user interfaces. It allows for the creation of dynamic, single-page applications that can handle real-time updates efficiently.
- Real-Time Framework: Socket.IO or WebSocket
- Justification: For real-time communication, Socket.IO or native WebSocket can be used to establish a connection between the client and server for instant score updates and leaderboard changes.
- Backend
- Technology: AWS Lambda
- Justification: AWS Lambda allows you to run backend code without provisioning servers. It can scale automatically with usage.
- API Gateway: AWS API Gateway
- Justification: API Gateway provides a robust way to create and manage APIs for your application. It integrates seamlessly with Lambda functions.
- Programming Language: Node.js
- Justification: Node.js is well-suited for serverless architectures, with extensive libraries for handling HTTP requests, WebSocket connections, and more.
- Database
- Database: Amazon DynamoDB
- Justification: DynamoDB is a fully managed NoSQL database that provides low-latency data access and can scale to handle high traffic. It is ideal for storing quiz data, user data, and scores due to its flexibility and speed.
- Authentication
- Service: Amazon Cognito
- Justification: Amazon Cognito provides user authentication and management, enabling secure sign-up, sign-in, and access control for your application. It integrates easily with other AWS services.
- Real-time Quiz Participation: Users should be able to join a quiz session using a unique quiz ID.
https://drive.google.com/file/d/1EUogI-u66n1TngxVQ2PF-qF9WrrBMRFI/view?usp=sharing