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

Recurring Payment-based Memberships in Web3

We see the need for businesses to have recurrent stable income streams rather than unpredictable once based on hype and market conditions. So we developed a solution that separates "ownership" from "use" by modifying a ERC721 contract and building a frontend for managing them

Recurring Payment-based Memberships in Web3

Created At

Scaling Ethereum 2023

Project Description

Our current project addresses the need for some businesses to have recurrent fees to maintain a stable income. We understand that many businesses struggle with unpredictable revenue streams, and so we have developed a solution that separates "ownership" from "use" by modifying a traditional ERC721 contract.

The Ownership of the NFT can be changed as any ERC721 Token through buying and selling on open marketplaces like Opensea or Quix. Our platform focuses on allowing users to activate the "use" of the NFT and give an easy overview of all memberships. To illustrate this, we have implemented a modified ERC721 with two different URIs that can be displayed depending on the status of the NFT. One URI will be shown if the user has paid the fee and the NFT is active, and another URI will be displayed if the NFT is inactive.

This solution incentivizes users to have greater participation and responsibility with the NFT project and helps the project have a long-term sustainable business model. It also enables businesses to plan with more stable recurring incomes to, for example, hire people, make longer-term investments, and in general, be more long-term oriented.

How it's Made

From the beginning, we separated the tasks into the back and front end, enabling a more parallel workflow. On the backend, we used foundry to write, test and deploy the contract, and to host the NFT images and metadata we used IPFS. In the contract itself we used the Openzeppelin ERC721 contract as a base, with the "Ownable" access control extension. By inheriting from these contracts, adding some state variables to keep track of "till when an NFT is activated", and overriding some inherited functions to manage the state for this variable, we were able to achieve the desired functionality. On the front end, we built the App with NextJS, React, and Typescript. For everything related to Wallet Management, we used the RainbowKit Starter Kit, which already included ethers.js and wagmi frameworks. Those three play amazingly together. After Iterations on Görli and OptimsmGörli, we finally deployed the App live on Optimism Mainnet through Vercel.

background image mobile

Join the mailing list

Get the latest news and updates