Trophy Case demonstrates universal badges, or achievements. Today, many apps (Duolingo, Fitbit, etc) incorporate gamification to award users with digital badges, but these often feel intangible and are difficult to showcase to friends who are not already Duolingo, Fitbit, etc users. They’re also siloed and one-dimensional — Julia is either a French enthusiast OR a distance runner depending on the app that we’re interacting with, but in reality she’s both (and more!). Our project simplifies the process of NFT integration for developers, and also shows how social discovery can be implemented using universal badge NFTs. Developers can deploy our NFT template contract and add minting capability in just one line using our JavaScript SDK. End users can enjoy their achievements from many apps & interests in a single place, as well as discover similar wallet addresses (finding other users interested in both learning French and distance running!) based on shared collections.

Trophy Case showcase

How it's made

We decided to build Trophy Case on Polygon to lower friction for developers and users new to web3 (in terms of gas fees and transaction speed). NFT metadata and image art are stored on IPFS. We used Moralis’ Web3 NFT API to find other wallet addresses with similar NFTs, and to reverse lookup wallet addresses to ENS names. The Moralis API was immensely helpful as some of the other NFT APIs we looked at (OpenSea, Rarible) did not include Polygon support. Resolving the ENS name was also simpler using Moralis than using ethers.js. Finally, we used the @davatar/react package to show ENS avatars when available. We’re proud that our project shows the end to end flow of how existing web2 apps might integrate NFTs, the simplicity of minting those NFTs, and additional use cases that can be built on top of these achievement NFTs, like social discovery.