Mobile app and social media developers have mastered the art of hooking people in and keeping them playing games, leaving likes, and making posts. Retail business have tried to hop on the bandwagon in recent years with mobile apps that track points you can use for certain deals, but those apps miss out on what actually works to keep people invested. Most people aren't going to Taco Bell to get the survey lottery on the back of the receipt.

We sat down and thought about a few key factors in getting people returning to social media and the like:

  • Constantly changing content
  • Pressure to be better than other people
  • Notifications that remind users to open their apps

And so our proof of concept was born: an app that lets users bid points on daily coupons, competing against other users around the world. Earn points by spending money at a retailer. Plan your strategy to win the best coupons by spending and saving. Where there's risk, there's reward - you could either come out with the deal of the century or nothing. It's in your hands.

How it's made

We created a RESTful API server using Flask and SQLite. This server keeps track of all of the users in the points economy, creates new auctions as old ones close, and even allows users to add points from QR codes printed on their receipts! This latter functionality is enabled by NCR's Business Services Platform APIs. QR codes can be generated to contain a specific transaction ID, and the server uses the ID to retrieve the transaction's information to calculate how many points to give to the user. Additionally, passwords are encrypted, and sessions are tracked with encrypted JSON Web Tokens.

The client app is created with Android Studio using Retrofit2 as the primary API handling library. UI design is not our strong suit, but that's not a problem. We mostly wanted a usable face to put on top of our Flask API.

Challenges we ran into

A lot of the challenges we encountered stemmed from our general lack of experience with creating and handling APIs and Android apps. We spent a lot of time just figuring out how to synchronize the protocols between the client, server, and database.

Built With

Share this project:

Updates