CassavaLand began with the curiosity to understand how Non-fungible token (NFTs) work, coming from a web2 background it wasn't easy getting it to work as it requires a bit of understanding of the Solidity smart contract programming language. So to make this tedious process smooth for non tech users, the need to create an NFT minting platform with easy to use user interface.
There was initially no plan to extend the project beyond personal use but given the high buzz of NFTs and well established platforms are slow to adapt to new and faster blockchains. The project UI is largely influenced and inspired by big players in the NFT industry like Opensea and Rarible.
What it does
Cassavaland's core functionality at the moment is a platform to mint and showcase both BRC721 and BRC1155 (partially) standard NFTs on the Bittorrent Donau blockchain.
How we built it
Cassavaland project uses a mono repository design. The repository is grouped into apps and libs sub folder, the apps folder contains 3 major apps;
- 1. Smart contracts
- 2. Subgraphs
- 3. Ui
The smart contract contains the core definitions for a standard BRC721 and BRC1155 token standard definitions with support for royalty. The smart contracts is compiled using hardhat
The subgraph is used to index scrape events emiited by the smart contracts on the blockchain into an easy to query database, though not used in this project.
The Ui folder contains the code for the application frontend and API. The project is built using NextJs a server side react framework.
Challenges we ran into
At first we ran into challenges on getting an RPC node as we initially wanted to build a custom standalone NFT indexer but the crazy thing is that we followed the developer documentation to provision a full node, as simple as the doc was to follow it's obvious that lack of sleep had got us running around a simple task for close to a week, posted on the BTTC and TRON discord for help but no response.
Another challenge was later when we decided to deploy a local graph node indexer, aha we got bated again by a chunk of errors which we later discovered to be an issue with RPC node provider as the graph node requires an archival node to function which we don't have hence we abandoning the use of the subgraph.
Accomplishments that we're proud of
It was my first time to provision a blockchain node, am used to using APIs from Infura, am really proud to have learned some linux commands and obviously how to run a bittorrent full node.
What we learned
What's next for CassavaLand
In next few months we hope to build out the project to a full NFT platform like Opensea and rarible but in terms of UI and ease of use.