Our inspiration was brought on primarily by the amount of time we have collectively spent waiting in drive thrus. We wanted to do everything we could to expedite that process, particularly for repeat customers. We do this by both simplifying the order process, and allowing the user the potential to complete the entire order process without any assistance from an employee, potentially freeing up that employee to complete other tasks instead, such as preparing the order, which will also speed up the order process.
What it does
Panera Bread Pass works with four different key components. The QR scanner, the iOS app, the dynamic menu board, and the api/server/database. When a customer pulls through the Panera drive-through they pull up to our QR scanner somewhere near the menu board and where you speak to order. Next, they pull out their Panera Bread Pass App that has a QR code displayed for them on their homepage that is unique to their user ID, and when scanned that ID will tell us who is ordering, allowing us to display their order preferences on the menu board as well as send orders under their assigned ID.
How we built it
Our project was built on a number of different technologies. We use an iOS app on the customer’s end built with Swift that provides a QR code and some basic user profile info based on their given user ID. The QR codes are created using a Python script, and the QR code is then scanned via camera using another Python script that utilizes OpenCV as well as a few other libraries in order to decode the QR code and send a request to the NextJS database with the decoded user ID in order to pull that specific user’s preferences. The menu is built with React and will dynamically change based on the user’s preferences, as well as allow the user or employee to add their own items to cart and submit orders either via requests sent by the React app or sent via the iOS app.
Challenges we ran into
A lot of our biggest challenges came from the wide range of technologies we used. We had three very different components (iOS, Python, React) all sending requests to our database, and both React and iOS also pulling information back down from the same database. The entire menu is stored in the database, which includes pricing, order history for each user ID, and order preferences based on the number of times a menu item has been ordered by a specific user.
Accomplishments that we're proud of
This was definitely the largest project we’ve ever built, primarily due to the large number of technologies we utilized. We’re immensely proud of how well it all works together, and how well we worked together as a team as well. It feels great to look back at what we’ve made, and the challenges we were able to conquer along the way.
What we learned
We learned a lot in completing this project. We can now all confidently say we are experts at making calls to an API, as it took a ton of testing in order to get everything working together seamlessly. This was two of our group members’ first Hackathon, and most of us had very little experience in completing group coding projects at all. We learned a lot about working together to complete tasks. We delegated everything out in a way that worked really well for everyone and we learned a lot of good teamwork skills that we can take with us after this weekend.
What's next for Panera Bread Pass
Like most projects, there is always room for scaling. Eventually we would want to just connect directly to Panera’s API to pull user data and menu info, which after some research we realized wouldn’t be possible without being an employee. We had several other features we would’ve liked to add during the Hackathon that were just lower priority than the core functionality, such as a geolocation tracker that would allow the restaurant to keep better track of the drive thru line, or a way for the user to specify specific requests for their order, such as no tomato on their Roasted Turkey and Avocado BLT.