Inspiration
The inspiration for Onlist came from a previous hackathon I did in February. Over 200 projects had applied and only 3 were chosen to receive money. After the hackathon was over I took the liberty of setting up a quick showcase website where all of the projects that applied were able to show off what they had built. Some were more fleshed out than others but the ideas that had been created amazed me. I thought it was unfortunate that most of these projects will never see beyond this page because only 3 will be chosen to receive funding. Considering the numerous NFT projects are raising money for their dubious roadmaps, why can't developers who are actually working on something raise funds that way too. Thus the idea for Onlist was born.
What it does
Onlist is the web3 Kickstarter.
Onlist allows web3 startups to raise money for their project by selling priority membership passes to their dapp via an ERC1155 contract in the form of an NFT.
For example, let's say you wanted to build and NFT-based trading card game but you don't have the skill to code one up. In order to raise funds you set up an Onlist project and sell membership passes that give the holder 75% off of any trading card pack you create in the future. This pass would not only be valuable to those who want to play the game but also to speculators who believe your game has the chance to be a big hit. Onlist allows you to crowdfund your game via both speculators and trading card enthusiasts which exponentially increases your ability to raise funds.
This is because unlike Kickstarter or Indigogo, once a user buys a priority membership pass they have the option either sell that NFT pass to another user for a profit or they can redeem it and receive their reward, in this case the 75% off all future card packs.
This creates a marketplace of membership NFTs that will power the future of crowdfunding, all of which is stored on IPFS.
How we built it
Onlist is primarily built in react and solidity. I first built out the smart contract functionality in solidity. The way it works is, it uses a proxy contract to mint and store all of the membership NFTs. This enables project owners to give them out for free to friends and family for the price of gas, while also allowing them to charge interested supporters. Then I built out the contract interaction with a front end. This included building a way for project owners to create their NFTs and also airdrop them. I then designed and built out the database schema for holding all of the data in Moralis. I chose to use a document based database in order to store lists rather than having to work around relational databases that could potentially have thousands of rows for each holder. I then worked on making the front end usable and intuitive so that people are able to understand where certain functions are and what is happening on chain vs off chain. Finally I made small touches to the look and feel of the app to give it a more polished look.
Challenges we ran into
Initially I had to figure out how to make it so that the mint functionality was pause-able and to make sure that the security of the application was not compromised in the process. Additionally, enumerating the NFTs and making sure they were assigned to the correct owner was a very difficult challenge to overcome.
The front end challenges mostly consisted of trying to create asynchronous calls that didn't cause an error when fetching data. This was accomplished using various web hooks that Moralis SDK provided out of the box.
As mentioned above the challenges presented by the back-end were mostly around creating database schemas that didn't involve relational databases as well as locking down the back-end so that only authorized users are able to make certain calls.
What's next for Onlist
We are hoping to raise funding for our own project in the coming months, if you are interest please fee free to head over to Onlist.io an check out our project campaign!

Log in or sign up for Devpost to join the conversation.