Inspiration
Even though NFTs are becoming more popular, the space is populated with generative NFTs that lack creativity and more or less look the same, for example cryptopunks and bored ape yacht club. We believe that for NFT to go mainstream, it requires the creativity that exists among small creators on commission markets like twitter and facebook.
What it does
NFTFivver is a freelance marketplace on the block that matches NFT artists/ creators to buyers who can be everyday people just like you and me. It gives more choices for buyers to request custom pieces. It also creates an opportunity for artists to let their creative juices flow. This combined help promote social mobility. Our system keeps all the NFT files on decentralized persistent storage using NFT.storage API that leverages the power of IPFS and Filecoin. Additionally, all the negotiation, transaction and communication that takes place between the buyer and the creator takes place over the blockchain using smart contracts so it is secure as well!
How we built it
This project is made up of 3 main parts: the frontend located in the 'frontend' folder, backend in the 'FreelanceNFTs' folder, and the smart contracts in the 'contracts' folder.
The frontend is made using the React framework along with styling tools such as tailwindcss and materialUI. Main pages of the frontend are located in the 'erc/pages' folder, smaller components in 'src/view', web-wide data in 'src/stores', contract interface using web3 in 'services', and relevant constants in 'src/constants'.
The backend is written in Django as a REST API for the frontend. The Django project can be found in the folder 'FreelanceNFTs' and the webapp corresponding to thee logic is called 'negotiate'. The backend aims to allow the sellers to reference their past work and allows the buyers to discover various sellers on the platform. But we wanted the main logic of the system to stay decentralised and run on the blockchain, so the backend does not store any of the actual files or communication between buyers and sellers. That is all handled by smart contracts.
The smart contract is written in solidity using remix and is deployed on Kovan test net. The addresses can be found in the frontend constants. There are 2 contracts that were deployed. The first is NFTMetadataMintable modified from openzepplin used in minting NFT with metadata. The transaction contract is used in price negotiation between buyers and sellers and trustless transaction of the agreed on value and the NFT. Security checks are done the contract level and not frontend-backend level. The reason behind using remix as opposed to brownie or hardhat is due to the small size of the contracts.
Challenges we ran into
We did not have any experience with any of the frameworks we have used to build this application. We had to learn React, Django, uploading files to IPFS and filecoin, and smart contracts that allowed buyers and creators to negotiate and transact over the blockchain from scratch. We experimented with using Flask but it did not work with the Database system we had in mind.
Accomplishments that we're proud of
We are really proud that we were able to learn all the frameworks we have used to build a fully functional prototype in less than 24 hours! We also believe that the idea that we came up with does achieve our original goal for building a freelance marketplace for custom NFTs that could be used by small creators and buyers alike!
What we learned
React, Django, solidity, tailwind, material-UI. Basically all the components needed for full stack development of an awesome webapp on the blockchain!
What's next for NFTFivver
Hosting the webapp on a cloud server, improving the UI/UX, and supporting more media types and multiple chains would be the next steps for this project.
Built With
- django
- filecoin
- ipfs
- javascript
- jsx
- material-ui
- nft.storage
- python
- react
- solidity
- tailwind
Log in or sign up for Devpost to join the conversation.