Acceptance Criteria:

Technological Level with Smart Contracts (hardhat project)

Minimum 2 contracts:

  • A contract for NFT item itself -> MarketItem.sol
  • A contract for Marketplace -> Marketplace.sol
  • Unit tests for both contracts with > 95% code coverage
  • Events need to be emitted on each major action into contracts

Deployment Scripts:

  • Automatic deployment scripts for desired testnets

Technological level with dApp

SDK:

  • contract interactions for the main functions of the contract
  • view functions, where you’ve got additional formatting of the data (for example checks, BN conversions, and metadata parsing)

Application Level:

  • As a user, I can create a collection and create a market item (NFT) from this collection. -> Collection & Mint pages
  • The image will be generated by URI + TOKEN ID
  • Generated URI & Image needs to be generated on IPFS storage
  • As a user, I can list the created market item (NFT) for sale with a specific price and marketplace allowance. (Approve of the marketplace as tokenApproval role)
  • As a user, I can buy a listed NFT.
  • As a user, I can see the NFTs of another user and collection (User Page & Collection Page).
  • As a user, I can make an offer of a nonlisted NFT (NFT which is not for sale) Allowance?!?!
  • As a user, I can accept an offer from another user to my nonlisted NFT for sale
  • As a user, I can cancel an offer or another offer to my NFT (Delete the allowance ->>>>> TBD)
  • Marketplace fee logic needs to be implemented
  • For every sale, the Мarketplace will deduct a fee which is deducted from the seller.
  • Only the Marketplace owner can withdraw the fee accumulated amount

Completeness of the project:

  • Two repositories with FE and Contract Implementation
  • Contracts deployed on the desired testate
  • FE connected with those contracts