Submission for Apptitude 2020 by Team Behencode @BRO3886 @rithikjain
The idea for this app was very simple. We go to supermarkets and nearby grocery stores even during this pandemic because getting suppies for home is absolutely essential.
A problem we found with the system here in India is that even though people sometimes follow social distancing, but in long queues, lack of pateince gets the best of us. Thus, we rarely see people following social distancing on cash counters.
So we came up with this app (..or you could say 2 apps).
We have 2 apps-
Qwickscan Client side, Qwickscan admin side
The client (or the person whos' grocery shopping) can add scan the items and quick add it to their cart. This cart is synced with our servers
Whenever they reach the billing counter, they can show a QR and the entire bill comes to the admin.
Now, the admin can verify the items or just process it ahead for payment.
In this way we reduce the queues and reduce paper waste generated by those long bills.
Thank You.
Client Side
- Login/Sign Up
- Splash Screen (Hack Requirement)
- Create Cart
- Adding items to cart (via TfLite object detection)
- Displaying QR code of Cart (every cart has unique ID)
Admin Side
- Splash Screen (Hack Requirement)
- Scan QR Code of Cart
- Displaying items in scanned cart
We also thought about integrating payment options for checkout after confirmation from admin, but due to the limited time, we could not do.
-
Pre-requisites:
- Android Studio
- Phyical Android device
- Flutter
- VS Code (recommended)
-
Directions to install
git clone https://github.com/BRO3886/qwickscan
- < directions to execute >
cd qwickscan
flutter run
- We were working for the first time with TFLite and real time object detection
- Had to figure out the appropriate UI on top of camera feed
- Laying out widgets on top of native views is difficult in Flutter.
- Luckily we found a way to do that.
- As a challenge, we tried implementing this with bloc. Considering the amount of boilerplate code needed for bloc, I feel great about how quikly I can implement it now.
Due to the time constraint, we could not complete the following:
- Payment integration with UPI to enable cashless transaction
- Implementing an inventory of items on the server
- Deleting items from cart (shit!)
- We can make a backend in Go
- We can easily implement Bloc for state mangement
- Bloc is prolly the best solution for state management in fluter
- Flutter and TFlite is somewhat stable
- The best way to go ahead with implemting ML is through MLKit (lol)
- The app is performant, but bloated in size
Thanks a lot to ACM-VIT for giving us this opportunity!