Inspiration
The inspiration behind the project is the desire to make a web3 project that can be used by everyone that I know -- an NFT project that is just as accessible to normies as it is to degens. When you have to connect a wallet to start using a site, you automatically disqualify the majority of the population from using your app. This project explores a way around that roadblock.
What it does
fizzgen allows a user to create a custom NFT on Polygon from their own images, either uploaded or captured with a webcam or mobile phone. They can then transfer their "fizzgen" (the NFT that they created) to other fizzgen users or to an external wallet address. They can also mint additional copies of their NFT (currently to one of three chains).
How I built it
In order to build an app that did not require a user to have a wallet, I built fizzgen in a way such that fizzgen acts as the initial custodian of all NFTs created by users. In other words, when a user makes a new fizzgen, the underlying NFT is minted by fizzgen and held in fizzgen's wallet. When a user wants to transfer their fizzgen to another user, it simply requires a change in the owner as recorded in fizzgen's database. If a user transfers their fizzgen to an external wallet address, there is a transfer of the underlying NFT from fizzgen's wallet to the address specified by the user, and that NFT leaves the fizzgen ecosystem.
Challenges we ran into
This was the first web3 project I built by myself, so challenges were plentiful! One big challenge was making sure that I could consistently get the NFT minted in less than 30 seconds before my AWS API Gateway connection would time out. (I think that the long term solution here involves the implementation of webhooks, but I just haven't gotten there yet!) Fortunately, Polygon's relative high speed made this solvable. Another big challenge was making it simple for users to tweet out new fizzgens that they created. Twitter does not make this easy! The tweet fizzgen button that we came up with uses Twitter Cards and custom HTML pages that are generated for each fizzgen to circumvent twitter's resistance to images that aren't uploaded onto their servers.
Accomplishments that I'm proud of
I'm very proud of the high level of accessibility that fizzgen offers. I've had the opportunity to demo it for users with web3 experience ranging from zero to advanced builders, and I've been pleased to see that using fizzgen was a largely intuitive experience for all of them.
What I learned
I learned that even if you make it really easy for people to make NFTs, you still have to answer the more fundamental question: "Why would I want to create an NFT from my image?" I think that answering this question will be key to seeing sustained user engagement. fizzgen currently has 30 users, but I'm not yet seeing most users return to make more fizzgens after making their first one or two.
What's next for fizzgen
On a high level, what's next for fizzgen is to create or encourage use cases for fizzgens and their underlying NFTs. The first way I plan to address this is the creation of a marketplace for fizzgens where users pay with USD (credit card) and can transfer purchased fizzgens into their own fizzgen account or to an external wallet. I also plan to explore other apps that fizzgen NFTs might integrate into and explore cross-promotional opportunities. I've also got some technical upgrades planned, like using webhooks to eliminate the problems caused by timeouts or other server interruptions during the fizzgen creation process.
Built With
- amazon-web-services
- ethers
- javascript
- mongodb
- mongoose
- nft.storage
- react
- solidity
Log in or sign up for Devpost to join the conversation.