This app is based on Nader Dabit's excellent How to Build a Full Stack NFT Marketplace with Polygon and Next.js tutorial (step-by-step guide | github).
I have used this tutorial to come up to speed and experiment with smart contracts and frontend web3 primitives. I've also added some additional features and updates.
My production deployment of this repo can be found at Scharfnado NFT Marketplace.
If you find this helpful or have questions, get in touch with me on Twitter
- Typescript as much as possible
- hardhat-deploy plugin to simplify contract deployment and testing with hardhat
- Multi-chain capability - define your chains in
conf/networkInfo.*.ts
- Network (chain) selector persisted in localstorage
- Ability to set listingPrice() on NFTMarket contract in case you can't find the faucet for a chain. (i.e. listingPrice(0))
conf
- Network configurations for frontendcontracts
- Solidity contractsdeployments/<network>
- ABIs per network/chainscripts/deploy
- Contract deployment scriptstest
- Contract tests
# 1. checkout repo and install dependencies
git clone ...
cd nft.joescharf.com
yarn install
# 2. Set configuration
## set .env required environment values (see .env.example)
## configure development and production networks in conf/networkInfo.*.ts
# 3. Deploy Contracts:
## (optional) test the contracts:
yarn hardhat test
## Launch local hardhat network and deploy contracts
yarn hardhat node
# 4. Start Frontend: Launch nextJS dev server
yarn dev
# navigate to http://localhost:3000
yarn hardhat node
- load hardhat rpc network and deploy contractsyarn hardhat test [--network <network_name>
- run contract test scripts (--network specifies alt network)yarn hardhat deploy --network <network_name> [--reset]
- Deploy contracts to specified network (--reset resets existing deployments)
hardhat
- Hardhat local networkmumbai
- Polygon Mumbai testnetiotadefi
- iota-defi.com IOTA EVM
Try running some of the following tasks:
npx hardhat accounts
npx hardhat compile
npx hardhat clean
npx hardhat test
npx hardhat node
npx hardhat help
REPORT_GAS=true npx hardhat test
npx hardhat coverage
npx hardhat run scripts/deploy.ts
TS_NODE_FILES=true npx ts-node scripts/deploy.ts
npx eslint '**/*.{js,ts}'
npx eslint '**/*.{js,ts}' --fix
npx prettier '**/*.{json,sol,md}' --check
npx prettier '**/*.{json,sol,md}' --write
npx solhint 'contracts/**/*.sol'
npx solhint 'contracts/**/*.sol' --fix
To try out Etherscan verification, you first need to deploy a contract to an Ethereum network that's supported by Etherscan, such as Ropsten.
In this project, copy the .env.example file to a file named .env, and then edit it to fill in the details. Enter your Etherscan API key, your Ropsten node URL (eg from Alchemy), and the private key of the account which will send the deployment transaction. With a valid .env file in place, first deploy your contract:
hardhat run --network ropsten scripts/sample-script.ts
Then, copy the deployment address and paste it in to replace DEPLOYED_CONTRACT_ADDRESS
in this command:
npx hardhat verify --network ropsten DEPLOYED_CONTRACT_ADDRESS "Hello, Hardhat!"
For faster runs of your tests and scripts, consider skipping ts-node's type checking by setting the environment variable TS_NODE_TRANSPILE_ONLY
to 1
in hardhat's environment. For more details see the documentation.