project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

ClubCast

ClubCast - a DAO clubhouse where the member have the power to decide the topics members truly care about. Buy a "club fragment", vote on the topic and ensure every session you attend is truly worth your time.

ClubCast

Created At

ETHOnline 2023

Winner of

🏊 Scroll — Pool Prize

🥈 Scroll — Best Use

Project Description

Welcome to "ClubCast"! What is it and why do we need this? Let's think about it, have you ever felt buyer's remorse after getting an online course that was just not advanced enough for you? Or subscribe to a YouTube channel only to find out the content is not interesting at all? ClubCast is a governance club platform that not only ensures the host creates good content but also makes members get what they want.

How does it work? For hosts:

  • To create a club, the host has to set up a governor structure for it, allowing your members to actively voice what they'd love to see.
  • Profit from every fragment (our version of club NFTs) that's sold.
  • To ensure the club's quality, hosts have to stake a certain amount of money as collateral. They can take it back when the club ends; on the contrary, the deposit will be distributed to members as a partial refund when they are not satisfied.

For members:

  • Buy the NFT as the ticket to join the club.
  • Vote for the topic they would like to see.
  • Request for refund

Come on over to ClubCast, where content meets democracy, and where we truly the rights of members. See you in the club!

How it's Made

This project uses NextJs to build the frontend and use Firebase as the backend. About the smart contract, I use hardhat as the developing environment for programming, testing, and deploying.

Let's start with how I build the smart contract first. I use Openzepplin Contract Wizard to generate the basic framework for ERC20, ERC721, and Governance contracts. I just added a few functions to it for testing and creating data. The most important is the ClubCast contract. I wrote it form scratch and included all the features that are required in the project, check https://sepolia-blockscout.scroll.io/address/0x556D421d26707AB2128EEf305aa34F9C30A5b380/contracts#address-tabs for more detail. ClubCast supports multiple chains, including Mumbai, MantleTest, and Scroll Sepolia. Moreover, I plan to use UMA Oracle to query off-chain real-world data to assert whether the refund request matches the requirements.

For the frontend,

  • I use Wagmi to manage the wallet functions and querying and listening contracts.
  • Since the project also provides chatting and sending messages features, XMTP is what I leverage and initialized by Wagmi.
  • After logging in, users can either create a club or join. When creating a club, I use ether.js to help users deploy ERC721 and Governaor contracts if they don't have one.
  • When the host tries to publish the media, I use web3.storage package to upload them to IPFS and store the ipfs URL to the ClubCast contract.
  • After the user joins the club, they can vote on proposal. One of the proposal can be requesting refunds. After the proposal passes, it will automatically call UMA oracle contract to check the real-world data. I follow the Data Asserter quick start to do that.
  • Lastly, I apply Push Protocol tools to set up the notification function. However, this function only support while the wallet is connected to Polygon.
background image mobile

Join the mailing list

Get the latest news and updates