Inspiration

The inspiration of developing the solution came from things that I experienced in my day to day life post-pandemic. The outbreak of COVID has changed the ways how we live our day to day life. People are hesitant to be in crowded places like they did pre-pandemic, and we are living by following the new norm. Going with our life by the new norm can be challenging some times, and that's where technology can play a major role to eliminate at least some of these challenges.

As most of the countries are now in the phase of eliminating the lockdown restrictions, to prevent citizens from getting exposed to virus, governments of most of the countries has put forward numerous guidelines to be followed. One of them is restriction of the number of people who can be present in a store at once. (restriction on occupancy in indoor places)

occupancy

On top of the customer occupancy restrictions, governments have directed the shop owners to keep a record of the visitors to help the health authority know who might have been potentially exposed to the corona virus. Usually the shop provisions a dedicated employee just for writing the visitor's name, address and time of visit which is a tedious task.

newsreport

QwithMax was developed to address these issues by helping the users stay in the queue virtually and safely from wherever they want and to help shops keep track of the visitors by automating the tedious task.

maxthemule

The solution is built with scope even beyond the pandemic. The same solution can be used to make more out of the the waiting time in long queues, by being virtually in the queue using QwithMax.


Source Code Repo


Implementation

List of Technologies used

  • Azure Ubuntu Virtual Machine to host the backend API implementation by installing mule runtime.
  • Mulesoft - Works as the brain of QwithMax
  • React-Native -React Native is an open-source UI software framework created by Facebook, Inc. It is used to develop applications for Android, Android TV, iOS, macOS, tvOS, Web, Windows and UWP by enabling developers to use the React framework along with native platform capabilities.
  • Queue from Azure service bus.
  • MySQL database from Azure.
  • Public third-party APIs
  • Outlook - To achieve SMTP capability.

High Level Design

The solution makes use of Azure VM machine which runs UBUNTU to host the backend API and expose REST endpoints to be consumed by the frontend. The application is hosted in the VM which does all the work in the background

The process of queuing up in real world is the same logic adapted to implement FIFO messaging queues. And its not a surprise that in the heart of QwithMax, an FIFO queue is provisioned to mimic the real world queuing process. For every shops a separate FIFO queue is provisioned and when a user wants to book a reservation in any shop, a message is published into the FIFO queue and when the shop is looking to accept the next user, it consumes the message from the FIFO queue. Along with this three other tables named user, shop and activity are kept in the MYSQL database to persist user, shop and visitor information. designDiagram

The users of QwtihMax interacts with the application using an android application which is build with react-native, a JavaScript library to build mobile applications.

The JavaScript code consumes the experience API endpoints which is enforced with policies as well as RAML based request validation. The experience API then in turn make calls to corresponding process API endpoints.

The necessary information vital for the working of the application like user information, shop information and historical visit data are stored in MYSQL database.

The main functionalities work as depicted in the diagram below

arch


Accomplishments that we're proud of

To be able to pull of such a end-to-end product in a time of less than 1 month.

What's next for QwithMax, A virtual queuing app

If government provide the APIs to check someone's vaccination status, this can be integrated with the application to check vaccination status of individuals.

Built With

Share this project:

Updates