In the midst of the COVID-19 pandemic, we've personally seen people flood grocery stores looking for items such as toilet paper, hand sanitizer, and more, leaving us sometimes traveling from store to store looking for these items that we may desperately need, especially in times where we need to isolate. This excessive travel causes congestion in the store, which is not only annoying for shoppers who want to grab items but risky because people are closer to each other which may increase the spread of the virus. It also causes congestion in our transportation infrastructure, with large amounts of cars and people on public transportation causing a more traffic and spreading even more coronavirus, especially in public transportation such as subways and buses. We decided that having a notification system that tells people when items are in stock will decrease travel and guesswork around their respective cities, allowing for less travel and more efficient shopping.
What it does
This app is designed to help people manage how much they go outside to buy essential items by alerting them of when these items are in stock. People are able to sign up for text notifications on the items that they want to be alerted about. Companies that sell these items can then send out notifications letting people know when they have refilled their stock, stopping people from having to constantly travel and guess which stores have which items.
How we built it
Our entire application is built off of the Twilio API, where we can send and receive customized text messages. We decided to use Python to implement this so that we could easily parse text and build a GUI with relative ease. The GUI was designed using Python and Tkinter, which allows stores to easily input which goods they have in stock. The web server was hosted off of ngrok, which saved us money by allowing us to use our own computers as web servers instead of paying money to rent a public web server.
Challenges we ran into
Designing the GUI was one challenge we had since none of us are really practiced in design elements. Additionally, having to think through the logic of the different cases. Python itself is something we are not as familiar with as we don't have practiced coursework, but we ended up learning a lot about the language and found that although it was syntactically unique, it wasn't all too hard to get the hang of. However, the greatest challenge was creating the webserver because we ran into many issues that we had almost no experience with. This webserver was integral to the functionality of our application, and getting it to work took a lot of research and trial, but we eventually got it to work nicely.
Accomplishments that we're proud of
As a team, we're proud of picking up an API that we had no experience with creating a fully fleshed, shopped-store interactive inventory system. We’re also proud of designing an aesthetic GUI, and implementing solid logic that creates optimized text messages that sends only to the people that it's relevant to.
What we learned
We learned a lot about the Twilio API, as it was something we had never used before but now are relatively proficient at. Additionally, Python was one of our weaker areas of expertise, and taking this time to code exclusively in Python allowed us to get a unique command of the language that you otherwise can't get without a larger scale project that you do. We also learned more about hosting a web server that interacts with other devices.
What's next for ShopperAlert
We plan to expand ShopperAlert by creating a more accessible GUI along with advertising the service to customers who might be interested. We also plan to expand the product options available for the user after the Coronavirus outbreak, where it could be expanded to more than just the current essential goods of toilet paper, hand sanitizer, and face masks.
Try It out
discord, flask, github, ngrok, python, rest-api, slack, tkinter, twilio, vscode