Every day when we used to walk into TeaTop to get some PMT, we'd always remembered the one thing we wanted to bring. The TeaTop Stamp Card. Not only would we forget to bring our StampCards, we'd also get a card every time we went, and numerous cards accumulated. At that point we realized, that Restaurant Loyalty has to be appified. A user should no longer have to find their card and remember to bring it. A restaurant should reward its customers for the years of loyalty we've provided. And that's why, today we present - "PunchIt"!
What it does
The concept of PunchIt is very simple. To allow restaurants to reward users through points or stamps, and then for the user to redeem their points for a reward . The app starts off by showing the nearest locations, and the address/distance/review using the Yelp API. If a user selects a location, the user is taken a new screen which has all the information of the location. It'll tell you how many points you have, recent reviews, what you can redeem and how many points it will cost you, and other information like telephone number and address. Each location will have this view.
We built redeeming/earning points with the mentality that the user should not have to give his/her phone to anyone, or let anyone tap on it. Thus, we came up with the idea of using QR Codes. Every user has a QR code that they show to the cashier. The cashier would then use the 'restaurant app' and scan the qr code through our app. If it's a valid QR Code, the cashier is taken to a new screen where they can add/redeem points for the user. That way, the user doesn't have to do anything except get a quick scan.
We've also made a website which acts like a control panel for the Restaurant. There, they can change settings, track progress and transactions and see how people are reacting. They can modify their information and change 'Tier' Values as well as Card values. Last but not the least, we made a dashboard containing graphs and charts of the latest information that the Merchant might want to see, such as the # of Users in the last week, How many transactions a day, and more.
NOTE: The app currently only works with TeaTop. If you try any other Merchant, the app will crash.
How I built it
The iOS App is built completely in Swift 2.0. Placing heavy use on CocoaPods, we were able to get frameworks like Firebase, and the Yelp API very easily. The app incorporates JSON manipulation with a sleek UI and numerous features. Our website on the other hand, was made with HTML5, CSS3 and JS. We strived to make the website simple, yet readable and understandable.
Challenges I ran into
Before this app, we had no experience with Firebase or using the Yelp API. Understand how Firebase works, how it's JSON structure work, and shifting our mindsets from Parse to Firebase took an extensive amount of time to get it just right.
The biggest challenge of all was incorporating Earn/Redeem into our application, as well as integrating Yelp. Yelp at the moment doesn't have a complete tutorial on how to set up Yelp and start using it on iOS, and thus I had to use 3rd Party tools to accomplish this and call the Yelp API.
Another major challenge was how to incorporate the QR Code and Earn/Redeem. The transactions that were going to take place had to be accessed by both the user, and the merchant, and passing in the user information was difficult. To simultaneously save data in both locations, then also be able to call it when individually requested was time-consuming and hard.
Accomplishments that I'm proud of
The fact that we were able to integrate both Firebase and the Yelp API successfully with no priod experience says a lot. That, and innovatively using QR Codes to read User Information, and modify their data was definitely great.
What I learned
This project taught us a lot about Firebase, and it's potential. One of the things that we realized was that data called by Firebase is immediately updated when changed. Thus, as soon as the restaurant adds/redeems points from the User's account, the change show up on the User's phone which they can track. We also learned a tremendous amount about the Yelp API and what kinds of data you can call. All of this knowledge will definitely be used in our next app.
What's next for PunchIt
PunchIt isn't going to stop here. Even though we ran into issues with the Card System, we're going to fix that and begin to onboard customers. The first one we have in mind is TeaTop. Our goal is to onboard atleast 20 Merchants in San Jose/Cupertino and see what consumers and Merchants have to say alike. We truly want to push PunchIt, and make it into an app that will be downloaded on everyones phones.