Project started on Aleph Hackathon !
π§ͺ This NFT Marketplace dApp is designed to facilitate art tokenization for artists, big and small.
βοΈ Built using NextJS, RainbowKit, Hardhat, Wagmi, Viem, and Typescript,
π To be deployed on Polygon and Avalanche
https://technai-marketplace.vercel.app/
- Mock USDC: https://amoy.polygonscan.com/address/0x80292e202a59957ae482b8c1821d51a234f5b0b6
- Mock NFT: https://amoy.polygonscan.com/address/0x312504ef3562d2b06b52f8b657fe60171ff94410
- Marketplace: https://amoy.polygonscan.com/address/0xe2b5359ef857dcd2cf3274962895967cb447888e
To get started follow the steps below:
- Open a terminal and run this commands to clone this repo and install dependencies:
git clone https://github.com/luloxi/technai-marketplace.git
cd technai-marketplace
yarn install
- After everything is installed, run this command to start a local blockchain network:
yarn chain
This command starts a local Ethereum network using Hardhat. The network runs on your local machine and can be used for testing and development. You can customize the network configuration in packages/hardhat/hardhat.config.ts
.
- Open a second terminal, navigate to
eleveNeleven
and run this command to deploy the test contract:
yarn deploy
This command deploys a test smart contract to the local network. The contract is located in packages/hardhat/contracts
and can be modified to suit your needs. The yarn deploy
command uses the deploy script located in packages/hardhat/deploy
to deploy the contract to the network. You can also customize the deploy script.
- Open a third terminal, and run this command to start your NextJS app:
yarn start
Visit your app on: http://localhost:3000
. You can interact with your smart contract using the Debug Contracts
page.
π¨ Simple Mint: Simple Mint is the way for artist to upload their art without needing to pay for minting or transactions, enabling collectors to pay for the first mint of a collection. By leveraging Simple Mint we aim to make artists access tokenizing their art without friction.
The first minter of a collection, who pays for cost of the deployment of the NFT contract, gets a share of the royalties of all the NFTs minted in that collection. This creates a market for art investors being eager to first mint a piece of art they like.
The cost of the deployment consists in the gas cost of the deployment transaction, and a custom optional USDC commision set by the artist that gets distributed 90% for the artist and 10% for the marketplace,
β Royalties: When buying and selling art through our market, artists have an option to set a royalty amount between 0.01% and 50%. This royalty is paid to the artist every time the NFT is sold, creating a passive income stream for artists.
In the case of Simple Mint, the first minter of a collection gets a share of the royalties of all the NFTs minted in that collection.
π Cross-Chain NFTs: As liquidity fluctuates between blockchains and marketplaces, we want to allow artists and collectors to easily bridge their NFTs between blockchains, and thus access other marketplaces. We aim to offer this functionality for NFTs minted on our marketplace by leveraging the Chainlink CCIP (Cross-Chain Interoperability Protocol) or the Avalanche Teleporter token transfer function.
πΆ Music NFTs: We add music to NFTs metadata and integrate with frontend, so that artists can tokenize their music and collectors can enjoy it.
π Remixing Feature: We aim to add remixing feature for NFTs, where the creator receives 30% of the royalties of the remix.
π€ Social Features: We aim to add social features to TECHNAI, like creating profiles, notifications, messaging, following artists, liking NFTs, and commenting on NFTs.
- Small artists
- Medium/Big artists
- NFT collectors (collect for the art)
- NFT investors/traders (collect and trade for the $)
- Free users
- Marketplace owner (one address, could be a DAO too)
- Page for interacting with the marketplace buy function and/or auction function (Reference: Simple Marketplace w/ Royalties))
- Payment in native gas token and maybe add a mixed pay that allows paying in USDC or native gas token (integrate Chainlink Price Feeds with AggregatorV3Interface) (Reference: Easy2Pay)
- β Add music to NFTs metadata and integrate with frontend (Reference: OpenSea metadata-standards)
- Create a contract for SimpleNFT and one for NFTFactory
- Page for minting that takes inputs for the metadata of the NFT (Reference: scaffold-class)
- Simple minting feature for artists to upload their metadata to IPFS and sign a EIP 712 message, and then wait for an investor (first minter) to pay for the contract creation transaction. (Reference: eip712hashing.sol)
- Determine which Royalty standard to implement, and start implementing it (References: ERC-2981 | ERC-4910 | ERC-721C compared to ERC-2981 and ERC-4910
- First minter gets a share of the royalties of all the NFTs minted in that collection
- Music player as a PWA that allows controlling the music from the notifications center on mobile devices (Reference: React Player)
- Upload the NFT Metadata to Filecoin instead of IPFS, and use it with a EIP-712 signature for Simple Mint. (Reference: Viem recoverTypedDataAddress)
-
Integrate GraphQL to index NFTs and save RPC calls
-
Artist NFT (limited edition): Holders of artists NFTs get access to backstage, events, a free drink on live events, etc)
-
Support for ERC1155 in the marketplace
-
Functionality to move NFTs between blockchains with Chainlink CCIP/Avalanche Teleporter (Reference: Chainlink CCIP Cross-chain Tokens) | Avalanche Teleporter
-
Batch buying NFTs, to reduce gas fees and the amount of transactions a user needs to make
-
Token gated content: Holders of song NFTs get access to special content for holders
Reference for expanding marketplace functionalities: Artion Contracts
- Remixing feature for NFTs, where the creator receives 30% of the royalties of the remix
- Introduce web2 social features like creating profiles, following artists, liking NFTs, and commenting on NFTs
- Notification system for increasing engagement (customizable and ideally with email or mobile notifications)
- Tip for artists: Enable or require tipping with tokens, and if you donβt have $ to pay, you can watch an ad as payment.
- Periodically airdrop dividends in USDC for creators (and first minters if appliable)
- Feature for creating collections of NFTs and displaying them in a gallery
- Ability to make your own group/community
- Profile creation with web2.5 login (Twitter, Instagram, Google, etc). Linked wallet could be with account abstraction or creating a wallet from scratch, TBD
- Direct Messaging system for artists and collectors