This project is inspired by the waiting too long in queues everywhere whether its restaurants, amusement park rides, or anything in general basically. We live in a world where waiting becomes a huge time consumer of our lives, why waste this time on waiting in lines when you can do something useful with it?
What it does
We made a virtual queue system where people can line up for a service without having to be physically present, and will have their place in line when they return to the business. We have implemented the real time Firebase Database to store vital information about the queue, such as who is next, and the number of people in the queue. The app allows customers/clients to simply scan in the QR code of the restaurant, and then access it's database containing real time information the queue. When it is the client's turn to enter the restaurant, the client will simply receive a notification prompting them to come inside.
We have 2 page in the application:
Organization (Business/Queue maker) Is able to start a virtual queue. Will receive a unique QR Code that is to be shown to customers so that they can join the queue. Can see which number is being called currently. Can see how many people is currently waiting. Can call the next person in line by pressing a button. Can stop a queue and remove existing people in the lines (Useful when you are in closing time). Can restart a queue after stopping an existing queue.
Client (Customer/Queuer) Is able to join a virtual queue. Will get a QR code scanner built in the app and they have to scan the queue maker's unique QR code to join an existing queue. Will receive a unique call number. Will have a countdown displaying the number of people in front of them. Will get an estimated time to their turn in the line. Will get real time notifications on the status of the queue so that the client will know when to be present at the location. Doesn't need to have the app open since it runs on the background, it updates the user using notifications.
A demo video has been linked to this Devpost demonstrating the functionality of the app. https://github.com/kiranmanoj2000/QueueSystem/blob/master/Demo%20Video.MOV
How we built it
We made an Android app using Android Studio to write the code and it is written in Java. Since the status of the queue is in realtime and it notifies everyone in the queue using the observer pattern, we needed a real time database. We used Google's Firebase Real-Time Database to contain the data of the businesses and the clients, and it updates both the client and the business every time a change is made to the database that the client is subscribed with. We also implemented a QR code generator and scanner built into the app itself using Google's ZXing library. When a business starts a queue, a unique QR code is created in the real time database. Whenever a Client scans that QR code, the business will be notified and the client is linked to monitor the business' queue status in the real time database. If a client attempts to scan in invalid QR code, they will not receive authorization to enter the real-time virtual queue.
Challenges we ran into
We spent a long time in setting up the real time database by Google's Firebase. At first it was every overwhelming to figure out how to link it to our Android Studio project, but with the help of a mentor and hard work, we finally got it running.
Accomplishments that we're proud of
We were very proud of getting the QR code scanning working properly. Another major milestone we achieved was correctly implementing Firebase into our project. This allowed us to use multiple connect multiple installs of this app on different phones and the run the apps in parallel, all connected to a central database providing real time updates.
What we learned
We all learned a lot about Android Development as a whole, including front end, backend and full stack developing. We also learned that even though something may seem impossible, with a little perseverance, anything is possible!
What's next for QueueSystem
We will continue the design and implement to have millions of users to be able to use it simultaneously, we also want a user to be able to connect to multiple organizations so that they can queue simultaneously.