๐จ ArtNiche - Your Premier NFT Marketplace for Art Collectibles. Crafted with Hardhat and Solidity for Secure and Vibrant Trading. ๐ผ๐ผ๏ธ
An NFT Marketplace for trading Art Collectibles built with Hardhat and Solidity It comes with a NFT ERC721 contract generated by OpenZeppelin Wizard, a test for that contract, and a script that deploys that contract.
NFTs and digital collectibles are growing popular as the web3 space continues to make significant advancements in the blockchain arena. The enormous popularity of NFTs like Cryptokitties and Bored APE pushed investors to purchase ERC721-compatible digital collectibles.
Tools like the OpenZeppelin Wizard that offers developers click and write functionalities to create composable and secure smart contracts in no time, used with Web3 developer tools like Alchemy, make the experience of writing a deploying code on the blockchain easy, fast, and reliable like never before
๐ Explore the App Repository
For a deeper dive into the application that interacts with these smart contracts, I invite you to explore the ArtNiche App Repository to see the dynamic interaction between our NFT marketplace and its user-friendly interface.
๐ Explore Further
For detailed information about this project, please take a closer look at this Medium article.
Join to ArtNiche, the digital art revolution and unlock the potential of NFTs!
Complete UML diagram of decentralized application design.
The first step is to clone the repository and execute the following command to install all the required modules
npm install
After that it will be necessary to create an account in Alchemy, infura or another similar service in order to configure the network on which the Dapp will be deployed.
In my case, I have created a project in Alchemy and I have created a secret.json
file to configure the deployment over the Mumbai testnet as you can see in the hardhat.config.ts
file of the project:
import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
const secret = require('./.secret.json');
const config: HardhatUserConfig = {
solidity: {
version: "0.8.9",
settings: {
optimizer: {
enabled: true,
},
},
},
networks: {
hardhat: {},
ganache: {
url: "http://127.0.0.1:7545",
allowUnlimitedContractSize: true,
gas: 2100000,
gasPrice: 8000000000
},
mumbai: {
url: `https://polygon-mumbai.g.alchemy.com/v2/${secret.projectId}`,
accounts: [secret.accountPrivateKey]
}
}
};
export default config;
The project has a set of tests to validate the correct behaviour of the contracts and the interaction between them. You can run the following command to launch the test suite on the local EVM:
npx hardhat test
You can also use ganache to carry out the tests, for this it is only necessary to use the network option
npx hardhat --network ganache test
You can target any network from your Hardhat config using:
npx hardhat run --network <network-name> scripts/deploy.ts
The project has been deployed on the Mumbai testnet, the addresses of the contracts are as follows:
Faucet contract deployed to 0xb7e5B6af2e2747CcBD0B18f8eA317002ae38b72c
ArtMarketplace contract deployed to 0x6d1FF414b97Ea0E208533832dA35d6ac831B7b4C
ArtCollectible contract deployed to 0xb89Fe0bbab1F5d80Bc5B66283c1b64633b62EE93
You can use the Remix IDE to interact with the contracts at those addresses: