View my NFT is a dApp that allows users to view the NFT's that they have in their wallet. It also allows them to create a short url that can easily be shared with friends or for your own future reference.
With this application, two sources of indexed data is being used, 1 - Covalent API 2 - theGraph
Originally this project started out using the template provided by Covalent and focused on using their API's. However I found that using both API's to be a more reliable way to get the data needed.
The** Covalent API** is really quite nice and I would have preferred to use it entirely but the missing data and errors returned on larger wallets prevented this. In an attempt to help remedy the missing data situation I scraped a list of all **NFT **projects on **MoonRiver **and created a Node.JS service that would hit every individual NFT metadata endpoint for Covalent. This took days to run as I limited the requests to 4 per second only and across all the NFT projects there were more than 1/2 Million requests to be made.
A few days later and a few server failures from running out of disk space I had helped index all the NFT metadata, this also helped in retrieving wallet balances as I could see more data appear after the NFT metadata was requested.
But it was not enough, I investigated **theGraph **and saw that it was possible to use it to get data as well, this was more reliable for getting wallet contents, The downside was CORS issues, so I spun a **Node.JS **micro service to tunnel these requests for me. This was further extended to allow for Short URL creation with a database backend. The NFT metadata was mostly in JSON files on IPFS. **IPFS **well that was another can of worms wasn't it.
**IPFS **is a great idea and using it all the needed metadata gets collected, when it came to displaying images IPFS was often slow, prone to timeouts and this inspired me to find a better solution. I did, seems that some people/services index what is on IPFS or act as a node that hosts this. These were great to use and provided a much quicker experience when using the site.
Wrangling the data, I implemented black lists as well as special handling for a number of NFT projects as there is no uniform standard that is adhered to. It has been a fun experience and got my first taste of Web3. I hope to see the Covalent API continue to develop more and make accessing onChain data simpler for us dev's
This project was a great experiment to get into the space and see the community in Web3, the enthusiasm from other participants and get my hands dirty with **Moonriver, Covalent, theGraph, ReactJS. **