Inspiration
We live in a world where content creators have taken the online world and pop culture by storm. Every niche, group, topic, and hobby has a slew of content creators on platforms such as Youtube, Instagram, TikTok, etc. who entertain billions of people across the world.
With a _ billion-dollar industry _ churning out content every day, it begs the question - why not let the people invest in their favorite content creators to support them while potentially profiting? The world of online content is constantly changing, with new ideas, trends, and creators popping up every second - it's hardly a static world. That begged the crazy idea, what if we allowed fans to _ invest _ in their favorite content creators?
And so, Teal was born.
What it does
Teal is a platform for “investing” in the growth of online content creators, whether it be your favorite YouTuber. With Teal, you can place an order for the tokens of creators you support and believe will grow. Then, as time goes on, the price of the token will fluctuate according to the creators’ performance. This allows you to sell the token and potentially earn money on the growth of the creator.
As a content creator, Teal makes it easier than ever to fundraise and engage your audience. All you need to do is apply for an Initial Token Offering (ITO) for your content. Once approved, you sell the specified number of tokens at an agreed-upon initial price. Then, you earn the money from the sales! Going forward, you can increase the number of tokens in circulation in order to raise funds again.
How we built it
Teal was built using the following technologies:
- React
- Node.js
- Express.js
- Solidity
- Web3
- Ethers.js
- OpenZeppelin
- Hardhat
- Pinata
We utilized a ReactJS frontend to represent the NFT marketplace, with an Express.JS (Node.JS) backend server to process simple buy and sell orders.
For the blockchain end, we first learned how to write and deploy an NFT. We had to go through various steps for this, including creating a Hardhat project, using OpenZeppelin library’s ERC721URIStorage and ERC721 token implementations to code up our own smart contract to mint an NFT, and writing up another contract to handle balances of NFTs held between each account.
Using the contracts we deployed, we then coded up several functions to mint new tokens, transfer tokens, and transfer ETH. We created several wallets (Ethereum accounts) with Metamask on the Ropsten test network to test these functions and worked with Etherscan to verify transactions made on the test network.
We worked with Pinata, an IPFS API and toolkit, to configure the metadata of our NFT such as its name, image, description, and any custom attributes we want it to contain.
Interplanetary File System (IPFS) is a decentralized protocol and peer-to-peer network for storing and sharing data in a distributed file system.
Then, we used Node.js and Express.js to implement endpoints to mint NFT tokens, buy NFTs and sell NFTs for content creators. These endpoints used the functions we coded up to transfer tokens, transfer ETH, and mint tokens.
Challenges we ran into
Coordinating with a hybrid team Coming into the hackathon, most of us had never worked with each other before in this environment and some had little experience with Hackathons. There were apparent learning curves initially for concepts such as blockchain, however, the dynamic make of the team was a great help. Where one member was lacking, there always was another team member willing to step in and teach.
A challenge we initially had was operating on the blockchain with ERC721 token implementations. The concept of NFTs was clear but implementing it was a fairly new task. Thanks to the ample resources online we pieced together a backend capable of accessing and operating on the blockchain.
As the end of the hackathon grew near, we had several technology pieces completed and ready to go but not connected with one another. Implementing and connecting the different working pieces of the product was a challenge at times but due to our initial planning, the puzzle pieces were not too difficult to put together.
Accomplishments that we're proud of
On the front end, we were successfully able to get a working prototype model of the front-end website that content creators and NFT buyers would use to buy and sell. We included a page that allows content creators to mint their own NFT tokens with specified parameters to share with their fans and a homepage that shows featured NFTs with a trending tab for potential buyers.
For the back-end, we were able to write a script for minting and transferring NFTs between wallets on the blockchain.
What we learned
For most of us, this was our first step into the world of blockchain and NFTs. Admittedly, it was initially daunting but we picked up the technologies such as solidity and Ethereum ERC-721 token protocol and learned valuable experience with blockchain concepts by working hands-on. We left the hackathon with a far better understanding of a crucial, developing technology that we had little idea about before, learning much more than we expected and gaining new interest.
We were familiar with full-stack concepts, with some of us better at one thing than the other. Having to create the website and servers in a rushed hackathon environment no doubt better honed out skills to work smarter and more efficiently.
Last but not the least, we learned the importance of planning ahead and blocking out tasks in a team. We made the decision to spend the first few hours drawing out a game plan and diagrams of the product, and then section out specific tasks to members so that we could play to our strengths. With hourly sync-ups, we ensured everyone was on the same page and worked more productively than if we had just rushed into the project.
What's next for Teal
Going forward, there are a number of features we are looking to incorporate. Firstly, we would like to establish a dynamic sign-up/login to allow many users and content creators to join. This should not be difficult to implement given the numerous resources available online.
Additionally, we would like to implement a better matching algorithm to provide better prices for both buyers and sellers. To do this, we would use a sorted list based on price and quantity and continuously match until all possible orders are filled.
Then, we would give a live price update, as well as dynamic historic price data and other metrics such as volatility by parsing blockchain transactions to get the previous data and calculating the metrics.
In addition, we would like to update our ERC-721 NFT code to remove unnecessary overhead, such as the image, and replace it with a lightweight static identifier.
Built With
- express.js
- javascript
- node.js
- openzepplin
- pinata
- react
- react.js
- solidity
Log in or sign up for Devpost to join the conversation.