In this project, I created an interactive NFT marketplace in React, Typescript & Solidity. Clients on this platform will be able to purchase NFTs with Ether digital currency. The application is created in the Next JS framework, built on top of the React JS.
Marketplace has dependencies on multiple technologies.
-
run
npm installto install dependencies -
In the root folder of the application create a
.env.developmentfile with following content:
NEXT_PUBLIC_NETWORK_ID=5777
NEXT_PUBLIC_TARGET_CHAIN_ID=1337
NEXT_PUBLIC_PINATA_DOMAIN=https://gateway.pinata.cloud
SECRET_COOKIE_PASSWORD={your custom at least 32 characters long password!}
PINATA_API_KEY={your api key from pinata}
PINATA_SECRET_API_KEY={your api secret key from pinata}
INFURA_ROPSTEN_URL=https://ropsten.infura.io/v3/xxxxx
- (your api pinata key has to allow
pinFileToIPFSandpinJSONToIPFSrules)
- Then migrate a contract to Ganache, contract can be found in the
contractsfolder. It's calledNftMarket.sol
-
To migrate the contract run
truffle migratein the terminal while Ganache network is setup and running. -
Do not forget to link
trufle-config.jswith Ganache, just go toconfigand clickAdd Project -
keys.jsonmust be created if you want to deploy to Ropsten, if not, just remove import ofkeys.jsonfromtrufle-config.jsand also comment outropstenconfiguration
- Now everything is setup and you can test out the app.
- Run
npm run devin the terminal. App will run atlocalhost:3000
- Infura.io
- Create new project
- Select endpoint -> Ropsten in my case or Rinkeby, you can get free Ropsten ETH => https://moonborrow.com/
- Copy the API key endpoint url with https://. and add it to your .env file
- Create
keys.jsonin the root directory, add togitignore. Add your metamask private key in this format
{
"PRIVATE_KEY": "xxxxxxxx",
"INFURA_ROPSTEN_URL": "https://ropsten.infura.io/v3/xxxxxxx"
}
- Deploy contract to ropsten:
truffle migrate --network ropsten
contract address: 0xbC38c937dAd7f548251EB5Ee2b9a3b6CfEd964BF
