Skip to content

Commit

Permalink
README modifications
Browse files Browse the repository at this point in the history
  • Loading branch information
luloxi committed Sep 16, 2024
1 parent bdaaf42 commit d99df76
Showing 1 changed file with 87 additions and 56 deletions.
143 changes: 87 additions & 56 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,9 @@
<img src="packages/nextjs/public/logo.png" alt="Alt text" style="max-width: 100%; height: auto;">
</div>

<!-- <h4 align="center">
<a href="Link to slides">Slides</a> |
<a href="Link to demo">Demo</a>
</h4> -->

# About

<h4 align="center">Project started on <a href="https://www.aleph.crecimiento.build/es-aleph-hackathon" alt="Aleph Hackathon Website">Aleph Hackathon</a> !</h4>

🧪 This NFT Marketplace dApp is designed to facilitate art tokenization for artists, big and small.
🧪 This dApp is meant to facilitate art tokenization for artists, and listening, watching and trading NFTs

⚙️ Built using Foundry, NextJS, RainbowKit, Wagmi, Viem, and Typescript,

Expand Down Expand Up @@ -59,77 +52,115 @@ yarn start

Visit your app on: `http://localhost:3000`. You can interact with your smart contract using the `Debug Contracts` page.

# Completed product features

🎨 **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.
# Roles within the platform

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.
- Artists
- NFT collectors (buy, sell, auction, collect)
- Marketplace owner (one address, could be a DAO in the future)
- Free users (watch, listen, in the future may consume ads)

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,
# Roadmap

**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.
## Phase 1

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.
Project started on [Aleph Hackathon](https://www.aleph.crecimiento.build/es-aleph-hackathon)
This repo was started with `npx create-eth@latest` with Foundry and integrated with the contracts and frontend from [github.com/luloxi/technai-marketplace](https://github.com/luloxi/technai-marketplace)

🌐 **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.
### Simple Mint

🎶 **Music NFTs**: We add music to NFTs metadata and integrate with frontend, so that artists can tokenize their music and collectors can enjoy it.
-**Simple minting function** 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: [grants.buidlguidl.com](https://github.com/BuidlGuidl/grants.buidlguidl.com))
-**Add music to NFTs metadata** and **integrate with frontend** (Reference: [OpenSea metadata-standards](https://docs.opensea.io/docs/metadata-standards))
-**Create a contract for SimpleMint and SimpleMintNFT**
-**Page for minting** that takes inputs for the metadata of the NFT (Reference: [scaffold-class](https://github.com/luloxi/scaffold-class))
- **Implement a database to store the signatures** that allows first minters to start a collection,
- **Add a page for first minters** reading from the database with NFTs available to complete the Simple Mint process

🔄 **Remixing Feature**: We aim to add remixing feature for NFTs, where the creator receives 30% of the royalties of the remix.
### Marketplace

🤝 **Social Features**: We aim to add social features to TECHNAI, like creating profiles, notifications, messaging, following artists, liking NFTs, and commenting on NFTs.
-**Page for interacting with the marketplace** buy and sell functions (Reference: [Simple Marketplace w/ Royalties)](https://app.buidlguidl.com/build/UxFNxy5XIMzz9mHKUxy5))
-**Payment in native gas token** and USDC token
- **Display auction info and interactions**
- **Add individual NFT pages** with more info about the NFT, if it's on sale, and the artist and bigger images
- **Add a page for the collector** with their NFTs and info about them
- **Add a page for the artist** with their NFTs and info about them
- **Add a way for artists (and collectors) to register their info (ideally with a signature)**

# Roles within the platform
## Phase 2

- 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)
### Simple Mint

# Roadmap
- **Display NFT being built as a preview** before minting (display the NFT and the metadata)
- **Allow setting max tokenId and price**
- **Determine which Royalty standard to implement**, and start implementing it (References: [ERC-2981](https://eips.ethereum.org/EIPS/eip-2981) | [ERC-4910](https://eips.ethereum.org/EIPS/eip-4910) | [ERC-721C compared to ERC-2981 and ERC-4910](https://blog.xp.network/the-battle-for-nft-royalties-meet-the-erc-2981-erc-4920-and-erc-721c-b71d6ba28acf)
- **First minter gets a share of the royalties** of all the NFTs minted in that collection
- **Periodically airdrop dividends** in USDC for creators (and first minters if appliable) (may not even be necessary if royalties pay redirect funds to the creators directly)

## Phase 1 (Marketplace)
### Marketplace

- **Page for interacting with the marketplace** buy function (Reference: [Simple Marketplace w/ Royalties)](https://app.buidlguidl.com/build/UxFNxy5XIMzz9mHKUxy5))
- **Payment in native gas token** and USDC token
- Add integration to marketplace for **displaying auction info and interactions**
- **Display Simple Minted NFTs in the marketplace**
- **Mixed pay** that allows paying in USDC or native gas token for the same amount of USD, and/or maybe crosschain payments with USDC CCTP or Chainlink CCIP (integrate Chainlink Price Feeds with AggregatorV3Interface) (Reference: [Easy2Pay](https://github.com/luloxi/Easy2Pay))
- **Batch buying NFTs**, to reduce gas fees and the amount of transactions a user needs to make

## Phase 2 (Simple Mint)
## Phase 3

-**Add music to NFTs metadata** and **integrate with frontend** (Reference: [OpenSea metadata-standards](https://docs.opensea.io/docs/metadata-standards))
-**Create a contract for SimpleMint and SimpleMintNFT**
-**Page for minting** that takes inputs for the metadata of the NFT (Reference: [scaffold-class](https://github.com/luloxi/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: [grants.buidlguidl.com](https://github.com/BuidlGuidl/grants.buidlguidl.com))
- **Determine which Royalty standard to implement**, and start implementing it (References: [ERC-2981](https://eips.ethereum.org/EIPS/eip-2981) | [ERC-4910](https://eips.ethereum.org/EIPS/eip-4910) | [ERC-721C compared to ERC-2981 and ERC-4910](https://blog.xp.network/the-battle-for-nft-royalties-meet-the-erc-2981-erc-4920-and-erc-721c-b71d6ba28acf)
- **First minter gets a share of the royalties** of all the NFTs minted in that collection
- **Artist NFT (limited edition)**: Holders of artists NFTs get access to backstage, events, a free drink on live events, etc
- **Token gated content**: Holders of song NFTs get access to special content for holders

## Phase 3 (Music player + Batch buying + Filecoin)
### Music player

- **Music player as a PWA** that allows controlling the music from the notifications center on mobile devices (Reference: [React Player](https://www.npmjs.com/package/react-player))
- **Batch buying NFTs**, to reduce gas fees and the amount of transactions a user needs to make
- **Upload the NFT Metadata to Filecoin** instead of IPFS, and use it with a EIP-712 signature for Simple Mint. (Reference: [Viem recoverTypedDataAddress](https://viem.sh/docs/utilities/recoverTypedDataAddress))
- **Tip for artists**: Enable or require tipping with tokens, and if you don’t have $ to pay, you can watch an ad as payment (i.e: for every 6 songs, 1 ad that gets distributed among the 6 artists reproduced for free).

## Phase 4 (More NFT types + Cross-chain)
### Social

- **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)
- **Mixed pay** that allows paying in USDC or native gas token for the same amount of USD, and/or maybe crosschain payments with USDC CCTP or Chainlink CCIP (integrate Chainlink Price Feeds with AggregatorV3Interface) (Reference: [Easy2Pay](https://github.com/luloxi/Easy2Pay))
- **Support for ERC1155** in the marketplace
- **Functionality to move NFTs between blockchains** with Chainlink CCIP/Avalanche Teleporter (Reference: [Chainlink CCIP Cross-chain Tokens](https://docs.chain.link/ccip/tutorials/cross-chain-tokens)) | [Avalanche Teleporter](https://docs.avax.network/cross-chain/teleporter/deep-dive)
- **Token gated content**: Holders of song NFTs get access to special content for holders
- Introduce **web2 social features** like creating profiles, following artists, liking NFTs, and commenting on NFTs
- **Feature for creating collections** of NFTs and displaying them in a gallery

## Phase 4

Reference for expanding marketplace functionalities: [Artion Contracts](https://github.com/Fantom-foundation/Artion-Contracts)
- **Guided Onboarding**: Make an interactive way to step-by-step user onboarding flow, and/or video material explaining the use of the platform, especially for artists or collectors who may be unfamiliar with blockchain or Web3 concepts.
- **Educational Content**: Tutorials or content to explain Web3 concepts, NFT minting, and royalties can improve user adoption.

## Phase 5 (Social features + Notifications + Free users tipping)
### Marketplace

- Consider transitioning ownership of the marketplace to a DAO
- **Support for ERC1155** in the marketplace, Simple Mint (rethink) and music player
- Go through [Artion Contracts](https://github.com/Fantom-foundation/Artion-Contracts) and see what **improvements can be made to the marketplace**

### Social

- **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
- Ability to **make your own group/community**

### Performance improvements

- **Functionality to move NFTs between blockchains** with Chainlink CCIP token transfer (Reference: [Chainlink CCIP Cross-chain Tokens](https://docs.chain.link/ccip/tutorials/cross-chain-tokens))
- **Profile creation with web2.5 login** (Twitter, Instagram, Google, etc). Linked wallet could be with account abstraction or creating a wallet from scratch, TBD
- **Integrate GraphQL to index NFTs** and save RPC calls
- **Upload the NFT Metadata to Filecoin** instead of IPFS, and use it with a EIP-712 signature for Simple Mint. (Reference: [Viem recoverTypedDataAddress](https://viem.sh/docs/utilities/recoverTypedDataAddress))

# Completed product features

🎶 **Music player**: This music player allows listening to onchain music, creating playlists, liking songs, all from your desktop or your mobile with our PWA.

TBD -> If you listen to music you don't own, an ad will play once in a while to pay to the artists.

📊 **Artist Dashboards**: Provide real-time insights for artists, such as statistics on how many times their NFTs have been viewed, liked, played (for music), etc.

🎨 **Simple Mint**: A way for artists to upload and mint their collections for free, where a first minter sponsors the collection minting costs and 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 complete cost for first minters consists in the price of 1 NFT plus the gas costs of the deployment transaction. The marketplace collects 5% of each first mint price.

**Royalties**: Artists have an option to set a royalty. This royalty is paid to the artist every time the NFT is sold through a market that supports the royalty standard, 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.

📈 **Royalty and Revenue Tracking**: Let artists track their royalties, sales, and revenue in an easy-to-understand interface.

🌐 **Cross-Chain NFTs**: We allow artists and collectors to easily bridge their NFTs between blockchains, and thus access other marketplaces. We offer this functionality for NFTs minted on our marketplace by leveraging the Chainlink CCIP (Cross-Chain Interoperability Protocol).

🔄 **Remixing Feature**: Take another artists piece and remix it. Then upload specifying what piece you remixed, and you can be displayed as a remixer artist on the art piece you remixed. The creator of the original piece will receive a percent of the royalties of the remix.

🤝 **Social Features**: You can create your own profile, like NFTs, get notifications on your favorite artists, message with other collectors and artists, comment on NFTs, and much more!

0 comments on commit d99df76

Please sign in to comment.