The problem Top Shot Match solves
TopShot Match is an iOS app that allows users to find other NBA Top Shot users and moments to trade with, utilizing Evaluate’s Swap contract to facilitate on-chain swaps.
It has a Tinder/classic trading card style card browsing and swiping UI, and it's data storage is 100% on-chain, built on the Flow blockchain using some existing (TopShot, EMSwap) and some new (TopShotMatch) contracts.
Features include:
- Like/dislike Moment: Just like Tinder, users can swipe right or left on a moment to like it or dislike it.
- Moment Trading: If you like a moment whose owner has also liked one of your moments, you'll be prompted to propose a trade.
- Trading block: Moments added to a user's trading block will apear for other users to browse through and potentially submit trade proposals for.
- Notifications: When a trade you've proposed is accepted by another user, you'll receive an in-app notification notifying you of the trade.
- On-chain: The entire app's backend is stored on chain using the contract I wrote for this app, TopShotMatch for storing liked moments and user trading blocks, and Evalulate's EMSwap contract to facilitate Moment swaps.
Unfortunately I did not have time to go through the App Store review process to get the app on TestFlight for easy testing, but the iOS project is available in the GIthub repo with instructions for how to run either on a simulator on your Mac or installing it directly to your device.
Challenges I ran into
Some challenges included:
- Learning how to use the fcl-swift library to integrate with the Blocto wallet
- Building the entire backend/data storage on-chain was tough and I would move some of this off-chain with more time, but it was fun writing more Cadence code
- The fc-swift library was missing some functionality I needed, so I opened a PR and got it merged and released - https://github.com/portto/fcl-swift/pull/35
- Building a functional mobile app in a short period of time is hard :) it was fun learning more about mobile development and building a fuly functional mvp/demo from scratch