## The problem it solves :

During these tough times when humanity is struggling to survive, **it is essential to maintain social distancing and proper hygiene.** As a big crowd now is approaching the **vaccination centres**, it is obvious that there will be overcrowding.

This project implements virtual queues which will ensure social distancing and allow people to stand separate instead of crowding near the counter or the reception site which is a evolving necessity in covid settings!

**“ With Quelix, you can just scan the OR code, enter the virtual world of queues and wait for your turn to arrive. Timely notifications will keep the user updated about his position in the Queue.”**

## Key-Features

* **Just scan the OR code!**
* **Enter the virtual world of queues and wait for your turn to arrive.**
* **Timely notifications/sound alerts will keep the user updated about his position/Time Left in the Queue.**
* **Automated Check-in Authentication System for Following the Queue.**
* **Admin Can Pause the Queue.**
* **Admin now have the power to remove anyone from the queue**
* Reduces Crowding to Great Extent.
* Efficient Operation with Minimum Cost/No additional hardware Required
* Completely Contactless

## Challenges we ran into :

* Simultaneous Synchronisation of admin & queue members with instant Updates.
* Implementing Queue Data structure in MongoDB
* Building OTP API just from scratch using Flask.

```
while(quelix.on):
        if covid_cases.slope<0:
                 print(True)
>>> True

```

[Github repo](https://github.com/Dart9000/Quelix2.0)

[OTP-API-repo](https://github.com/Dart9000/OTP-flask-API)

[Deployment](https://quelix.herokuapp.com/)
## Inspiration

The first step of our development process was conducting user interviews with University students within our social circles. When asked of some recently developed pain points, 40% of respondents stated that grocery shopping has become increasingly stressful and difficult with the ongoing COVID-19 pandemic. The respondents also stated that some motivations included a loss of disposable time (due to an increase in workload from online learning), tight spending budgets, and fear of exposure to covid-19.

While developing our product strategy, we realized that a significant pain point in grocery shopping is the process of price-checking between different stores. This process would either require the user to visit each store (in-person and/or online) and check the inventory and manually price check. Consolidated platforms to help with grocery list generation and payment do not exist in the market today - as such, we decided to explore this idea.

**What does G.e.o.r.g.e stand for? : Grocery Examiner Organizer Registrator Generator (for) Everyone**

## What it does

The high-level workflow can be broken down into three major components:

1: Python (flask) and Firebase backend
2: React frontend
3: Stripe API integration

Our backend flask server is responsible for web scraping and generating semantic, usable JSON code for each product item, which is passed through to our React frontend.

Our React frontend acts as the hub for tangible user-product interactions. Users are given the option to search for grocery products, add them to a grocery list, generate the cheapest possible list, compare prices between stores, and make a direct payment for their groceries through the Stripe API.

## How we built it

We started our product development process with brainstorming various topics we would be interested in working on. Once we decided to proceed with our payment service application. We drew up designs as well as prototyped using Figma, then proceeded to implement the front end designs with React. Our backend uses Flask to handle Stripe API requests as well as web scraping. We also used Firebase to handle user authentication and storage of user data.

## Challenges we ran into

Once we had finished coming up with our problem scope, one of the first challenges we ran into was finding a reliable way to obtain grocery store information. There are no readily available APIs to access price data for grocery stores so we decided to do our own web scraping. This lead to complications with slower server response since some grocery stores have dynamically generated websites, causing some query results to be slower than desired. Due to the limited price availability of some grocery stores, we decided to pivot our focus towards e-commerce and online grocery vendors, which would allow us to flesh out our end-to-end workflow.

## Accomplishments that we're proud of

Some of the websites we had to scrape had lots of information to comb through and we are proud of how we could pick up new skills in Beautiful Soup and Selenium to automate that process! We are also proud of completing the ideation process with an application that included even more features than our original designs. Also, we were scrambling at the end to finish integrating the Stripe API, but it feels incredibly rewarding to be able to utilize real money with our app.

## What we learned

We picked up skills such as web scraping to automate the process of parsing through large data sets. Web scraping dynamically generated websites can also lead to slow server response times that are generally undesirable. It also became apparent to us that we should have set up virtual environments for flask applications so that team members do not have to reinstall every dependency. Last but not least, deciding to integrate a new API at 3am will make you want to pull out your hair, but at least we now know that it can be done :’)

## What's next for G.e.o.r.g.e.

Our next steps with G.e.o.r.g.e. would be to improve the overall user experience of the application by standardizing our UI components and UX workflows with Ecommerce industry standards. In the future, our goal is to work directly with more vendors to gain quicker access to price data, as well as creating more seamless payment solutions.
## Inspiration

Recently, I was at a vaccination center. The queue was very long with little to no management. I had to wait for a long time in the queue. That’s when it hit me. I could leverage my knowledge in technology to somehow improve the situation. Queues can be a huge issue, not only at the vaccination centers (because of the proximity with each other) but almost everywhere. For example, the elderly shouldn’t have to stand in queues outside government offices, grocery stores, etc. That’s when I came up with the idea of letting our devices do the work of standing in the lines and making the process of maintaining and joining queues as easy as possible for everyone. So, I along with my friends decided to build a hack for it. A hack that solves a vital problem of our neighborhood.

## What it does

Digi Queue is an android mobile app + web app that makes queue management super easy. Let's deep dive into it's features.

1) As a creator of the queue:

* You have full access to the working of the queue.
Our service will generate a QR code once you create a queue. The QR code or the queue id can be shared with everyone.
* You get the details of all the queues you have created; you can deactivate a queue, activate a queue, delete a queue, and move the queue ahead.

2) As a member of the queue:

* You can join any queue available from the app or you can enter the queue ID or scan the QR code from the scanner embedded in our android app.
* The app informs you about your position in the queue as well as the expected waiting time for the queue. You may decide to leave the queue if you wish to.

## How we built it

* We used Flutter to build the mobile app and ReactJS for the web version of the app.
* The backend was done using Flask and is hosted on the Microsoft Azure web service.
* Heroku is being used to host the main website.
* CosmosDB is being used as the database.
* Figma was used for wireframing and designing both the website as well as the app.
* We have also integrated Twilio to notify users when they are close to the front of the queue [Since we have a free account on Twilio, it is functional for a single mobile number only]

## Challenges we ran into

Well, building a functioning web app and a mobile app in two days was a challenge in itself. There were a lot of tricky parts like:

* Estimating the time and sending notifications to the users.
* Integrating APIs by using proper data/error handling and maintaining the sleek UI along with great performance was a tricky task.
* It was a great experience as it tested our skills of working under such time constraints and delivering a working prototype.

## Accomplishments that we're proud of

We are really proud of the features that we have implemented in this app. One of them is time estimation and showing real time changes when the queue gets updated/deleted.

## What we learned

Well, we didn't have a member who does proper designing so we learned FIGMA. Our app developer learned some advanced concepts of state management and the web developer learned some cool new features of React. Also, we learnt to host the app on Azure as well as Heroku.

## What's next for Digi Queue

Well, we have so much planned for Digi Queue

* We are planning to implement a queue scheduling feature where a user can schedule a queue for a particular time slot. This can be helpful in government offices and shopping markets.
* We are also planning to make the app location-based so that only the queues in your surrounding will be shown to you.
* And provide real-time updates via push notifications for every activity.