Basic NFT Marketplace
- Central market that keeps track of items to be sold (NFTMarketplace.sol)
- Each item is a struct which has (creator, seller, price, nft token contract address, token id, item id, royalty_enabled, royalty amount)
- Marketplace allows - List item for sale
- Marketplace allows - Buy item from marketplace
- Basic stats - owner of an item, number sold, number unsold, most sold, items owned by an address, items sold by an address
- NFT contract that allows minting of tokens with unique id and tokenURI (NFTContract.sol)
- Marketplace collects fee from every sale
- Pays royalty to creator on every sale if enabled
- Lazy minting - first buyer mints the NFT -> pays the gas fees - //TODO
- Buying with other tokens (like USDC, MATIC, UNI, etc.) -> get price from Chainlink //TODO
- Deploy upgradeable Marketplace contract using UUPS proxy pattern //TODO
- Allow resetting price of an NFT
(Inspired by Nader Dabit's NFT Marketplace and extending the idea)