I'm not sure how we came up with this idea, but we all hate waiting in like to pay at stores. There's things like Amazon Go, which use computer vision to determine which items are being bought, but our goal is to achieve the same results without cameras and without expensive machine learning algorithms.
What it does
When you walk around the store, you move around and add each item to your virtual shopping cart by tapping your phone against it. Then, as you leave the store, your phone will automatically charge your for each item that you've purchased.
How we built it
We built it in 3 portions:
- A back-end in flask. This stores our data and handles interacting & abstracting over the NCR API.
- A admin-facing frontend in React/HTML5. This interface shows all available products, current stock levels, and transactions performed.
- A user-facing frontend in React/HTML5. This handles scanning NFC tags, shopping cart management, and simulated payments.
Challenges we ran into
We had a ton of small problems during the hackathon, which was a welcome change from previous experience with 1-2 massive problems.
- We were unable to hit NCR's API until halfway through the hackathon because we didn't understand the interaction between the Catalog & Site APIs.
- Android's NFC APIs are not exactly straightforward to use, so we gave up on our plan to use those.
- The Web NFC API only works on HTTPS pages, so it took us a while to figure out why our thing wasn't working on our HTTP development pages
- Some cell phones can't write text to NFC tags. But URLs work just fine. How does this make any sense?
Accomplishments that we're proud of
We were able to build a polished and well-designed application for this purpose in the span of 48 hours, while at the same time sleeping more than usual!
What we learned
React & HTML5 platforms are incredibility flexible, and reasonably easy to use. At the beginning of this project, I would have never guessed that there is an API for NFC in every Chrome browser.
What's next for MARKIT
There are still unresolved problems, but primarily we need to be able to tell what's in customer's bags as they walk through the door. This final step is important in order to ensure that each customer only walks out with the items they intend to--we don't want kids secretly dropping items in their parents' shopping cart!