The Queue Management System (QMS) is a comprehensive application designed to manage client registrations, facilitate real-time updates, and provide administrative control over the queue. It features two types of users: Admins and Customers. Admins can manage the queue by adding, modifying, deleting, and messaging queue members, while Customers can register themselves into the queue and view their status.
-
Frontend:
- React.js
- Vite
- Bootstrap
- AWS Amplify
- Admin Interface: Allows admins to manage the queue.
- Customer Interface: Allows customers to register and view the queue.
-
Backend:
- AWS Lambda Functions: Handle the business logic.
- AWS API Gateway: Provides endpoints for interacting with the backend.
- AWS DynamoDB: Stores queue data.
- AWS SNS & Amazon Pinpoint: Handles messaging.
- AWS Cognito: Manages authentication and authorization.
- SST: Local development and infrastructure as a Code IaC.
-
- WebSocket: Facilitates real-time updates between admin and customers.
-
Customer Registration:
- The customer registers via the frontend, sending a POST request to the backend.
- The backend updates DynamoDB with the customer's information.
- The backend sends a WebSocket message to the admin interface, notifying it of the new registration.
- The admin interface updates its UI to reflect the new customer.
-
Admin Management:
- Admins can add, modify, and delete queue members.
- Admins can send messages to customers via SNS and Amazon Pinpoint.
- All admin actions are reflected in real-time on the customer interface via WebSocket.
- Real-Time Updates: WebSocket communication ensures that the admin and customer interface is updated in real time.
- Authentication and Authorization: Managed by AWS Cognito, ensuring secure access for admins and customers.
- Scalable Storage: DynamoDB provides scalable and reliable storage for queue data.
- Messaging: Integrated with SNS and Amazon Pinpoint for efficient customer communication via SMS messages.
- Node.js and npm
- AWS CLI configured with appropriate permissions
- Serverless Stack (SST) CLI
-
Clone the Repository:
git clone https://github.com/farukh-ava/qms.git cd qms -
Install Dependencies:
npm install
-
Deploy the Infrastructure:
npx sst deploy
-
AWS Cognito:
- Set up a user pool for admins and customers.
- Configure the user pool in the
AdminAPIStackandCustomerAPIStack.
-
DynamoDB:
- Ensure tables for storing queue data and connections are created.
-
SNS and Amazon Pinpoint:
- Set up SNS topics and Pinpoint projects for messaging.
-
Start the Local Development Environment:
npx sst start
-
Deploy to Production:
npx sst deploy --stage prod
Contributions are welcome! Please submit a pull request or open an issue to discuss any changes.
This project is licensed under the MIT License.
