Bootstrap an NFT minting site with Merkle tree whitelists.

Overview

🖌️ nft-merkle-whitelist-scaffold

Bootstrap an NFT minting site with merkle tree whitelists.

Go to nft-merkle-whitelist.vercel.app to see the latest deployment.

Deployed sample NFT contract can be viewed on rinkeby.etherscan.io/address/0x0E7121b8aaEBd6F4fAbe13890E33d9E8fD0Fd345

Get Started

Play around with the deployed test app here

To build your own NFT mint page with merkle whitelist:

  1. Clone this repo
  2. Head to contracts README.md to set up your contracts
  3. Head to web README.md to set up your front-end
  4. Deploy your web-app using vercel

Inspiration

Inspiration for this came from many different projects. Some notable ones include:

Feedback

Have issues? Feel free to make an issue, open a pull request or reach out! If you end up using this or finding this helpful please let me know :) It'll make my day 🤩

License

GNU GENERAL PUBLIC LICENSE

Disclaimer

I'm started my web3 dev journey in the last year and these smart contracts are not audited so use at your own risk. (if you notice anything though, please let me know!)

Comments
  • Format for ENV

    Format for ENV

    I keep getting errors saying the private key isn't 32 bytes. If I place in config directly after 0x it will compile.

    Another issue is after that I run the deploy script is it says invalid endpoint. could you share an example ENV file populated please?

    Thanks!

    opened by mrbrimm 2
  • Can I list more than one NFT for each minting mechanism?

    Can I list more than one NFT for each minting mechanism?

    Hi, thanks for creating and making public this framework, it is the best I have found so far. I noticed on https://nft-merkle-demo.vercel.app/ that there is only one NFT available for each "minting mechanism". E.g. only one Gift Mintable NFT, one Public Mintable NFT etc..

    What I was wondering is whether this is an inherent limitation of this codebase, or if it could be easily modified to add more than one NFT for each minting mechanism?

    I would ideally like to use it to list 10k NFTs, without needing to mint them up-front. Is this something I could relatively easily achieve using this codebase? Thank you very much.

    Distbit

    opened by distbit0 0
  • Unhandled Runtime Error- TypeError: Cannot read properties of undefined (reading 'methods') : Any idea what's going on?

    Unhandled Runtime Error- TypeError: Cannot read properties of undefined (reading 'methods') : Any idea what's going on?

    33 | } 34 | async function checkIfClaimed() {

    35 | sampleNFT.methods.claimed(account).call({ from: account }).then((result) => { | ^ 36 | setAlreadyClaimed(result); 37 | }).catch((err) => { 38 | setAlreadyClaimed(false);

    opened by boshjerns 0
  • Multiple Whitelist Addresses, all different max mint per txn

    Multiple Whitelist Addresses, all different max mint per txn

    Is there anyway to map this out in the smart contract? For a custom whitelist? Example given: Wallet 1 is allowed to mint 3 NFTs. Wallet 2 is allowed to mint 11 NFTs. Wallet 3 is allowed to mint 50 NFTs. Wallet 4 is allowed to mint1 NFT. etc...

    opened by allendp11 1
  • hey everyone thread '<unnamed>' panicked at 'assertion failed: `(left == right)` error when I run command 'yarn dev'

    hey everyone thread '' panicked at 'assertion failed: `(left == right)` error when I run command 'yarn dev'

    Describe the bug A clear and concise description of what the bug is. [root@VM-0-15-centos web]# yarn dev yarn run v1.22.17 $ next dev ready - started server on 0.0.0.0:3000, url: http://localhost:3000 info - Loaded env from /root/NFT/nft-merkle-whitelist-scaffold/web/.env thread '' panicked at 'assertion failed: (left == right) left: 22, right: 0', library/std/src/sys/unix/condvar.rs:63:9 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 error - ./node_modules/next/dist/client/dev/amp-dev.js Error: failed to process ^C [root@VM-0-15-centos web]# yarn build yarn build yarn run v1.22.17 $ next build info - Loaded env from /root/NFT/nft-merkle-whitelist-scaffold/web/.env info - Checking validity of types info - Creating an optimized production build ..thread '' panicked at 'assertion failed: (left == right) left: 22, right: 0', library/std/src/sys/unix/condvar.rs:63:9 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 thread '' panicked at 'Once instance has previously been poisoned', library/std/src/sync/once.rs:393:21 info - Creating an optimized production build Failed to compile.

    ./node_modules/next/dist/client/next.js Error: failed to process assertion failed: (left == right) left: 22, right: 0

    ./node_modules/next/dist/client/router.js Error: failed to process

    ./node_modules/next/dist/pages/_error.js Error: failed to process

    ./pages/_app.js Error: failed to process

    ./pages/index.js Error: failed to process

    Build failed because of webpack errors error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

    To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    opened by jianvector 1
  • Please add a total supply counter below the minting card

    Please add a total supply counter below the minting card

    Can you implement this counter to show how many have been minted below the mint card. For example when you connect it would say "5/300" if 5 out of 300 were minted. https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/test/utils/Counters.test.js

    opened by jaydeebow 3
Solidity NFT whitelist contract example using MerkleTree.js for constructing merkle root and merkle proofs.

MerkleTree.js Solidity NFT Whitelist example Allow NFT minting only to whitelisted accounts by verifying merkle proof in Solidity contract. Merkle roo

Miguel Mota 65 Dec 29, 2022
Create your own custom NFT minting page using thirdweb's NFT Drop contract

Customizable NFT Drop Minting Page In this example, you can create your own NFT Drop minting page just by customising the template with your branding,

thirdweb examples 59 Dec 24, 2022
Frontend, contracts, and merkle tree generator for use in quickly scaffolding ERC20 token airdrops.

Merkle Airdrop Starter Quickly bootstrap an ERC20 token airdrop to a Merkle tree of recipients. Steps: Generate Merkle tree of recipients by following

Anish Agnihotri 675 Dec 22, 2022
🐲 Epic NFTs [UI] - Proyecto que te permitirá conectar tu billetera y acuñar un NFT, podrás revender el NFT en OpenSea. El NFT en sí se puede personalizar

?? Epic NFTs [UI] El proyecto se encuentra deployado en Vercel para que puedan verlo e interactuar con él, toda crítica o comentario se agradece, pued

Braian D. Vaylet 17 Oct 22, 2022
Fullstack Dynamic NFT Mini Game built using 💎 Diamond Standard [EIP 2535] 🏃‍♀️Players can use Hero NFT to battle against Thanos ⚔ Heroes can be Healed by staking their NFT 🛡

?? Fullstack Dynamic NFT Mini Game ?? ?? Using Diamond Standard Play On ?? ?? ⏩ http://diamond-dapp.vercel.app/ Project Description ?? Fullstack Dynam

Shiva Shanmuganathan 21 Dec 23, 2022
NFT Marketplace framework to build standalone NFT marketplace or inApp/inGame NFT marketplace

NFT Marketplace This project is a decentalized NFT Marketplace framework which is to be the baseline for you to build standalone NFT marketplace or in

Reddio, inc. 14 Dec 19, 2022
This is NFT minting and marketplace website.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

NAJI2329 15 Oct 10, 2022
Elven Tools Dapp - Elrond blockckchain frontend dapp demo. Primarily for NFT minting, but it can be used for other purposes.

Elven Tools Dapp Docs: elven.tools/docs/landing-page.html Demo: dapp-demo.elven.tools Sneak peek: youtu.be/ATSxD3mD4dc The Dapp is built using Nextjs

Elven Tools 24 Jan 1, 2023
Ethereum NFT minting bot 🍌 🔥

Mineth – Open source Ethereum bot for minting NFTs. This repository provides a code for deploying it on server and calling from your local network. Fo

Daniil Korolev 2 Aug 6, 2022
CandyPay SDK lets you effortlessly create NFT minting functions for Candy Machine v2 collections.

@candypay/sdk CandyPay SDK lets you effortlessly create NFT minting functions for Candy Machine v2 collections. Simulate minting transactions for mult

Candy Pay 33 Nov 16, 2022
Use signature-based minting to allow users who have contributed to your github repositories to claim an NFT!

GitHub contributors NFT rewards This project demonstrates how you can build a full-stack web3 application that allows github contributors of certain r

thirdweb templates 8 Nov 5, 2022
Fancytree - JavaScript tree view / tree grid plugin with support for keyboard, inline editing, filtering, checkboxes, drag'n'drop, and lazy loading

Fancytree Fancytree (sequel of DynaTree 1.x) is a JavaScript tree view / tree grid plugin with support for keyboard, inline editing, filtering, checkb

Martin Wendt 2.6k Jan 9, 2023
Extends Bootstrap Tooltips and Popovers by adding custom classes. Available for Bootstrap 3 and Bootstrap 4.

Bootstrap Tooltip Custom Class Extends Bootstrap Tooltips and Popovers by adding custom classes. Available for Bootstrap 3 and Bootstrap 4. Define you

Andrei Victor Bulearca 14 Feb 10, 2022
A simple Form Validation Utility for Bootstrap 3, Bootstrap 4, and Bootstrap 5 for Humans.

bootstrap-validate A simple Form Validation Utility for Bootstrap 3, Bootstrap 4, and Bootstrap 5 for Humans. ?? Support us with Developer Merchandise

null 138 Jan 2, 2023
JCS (JSON Canonicalization Scheme), JSON digests, and JSON Merkle hashes

JSON Hash This package contains the following JSON utilties for Deno: digest.ts provides cryptographic hash digests of JSON trees. It guarantee that d

Hong Minhee (洪 民憙) 13 Sep 2, 2022
A starter next.js + solidity project that implements merkle trees

Create Merkle App By Backseats This is an example app that shows you how to use a Merkle tree for your allow list Includes a partial contract contract

null 6 Nov 6, 2022
Privacy preserving governance mechanism using zero knowledge for proof of merkle inclusion.

Zero Knowledge Private Voting V1 Motivation On-chain governance today is fully transparent at the cost of privacy. This means that every proposal and

Blockchain Capital 18 Dec 16, 2022
Privacy preserving governance mechanism using zero knowledge for proof of merkle inclusion.

Zero Knowledge Private Voting V1 Motivation On-chain governance today is fully transparent at the cost of privacy. This means that every proposal and

Blockchain Capital 11 Jun 7, 2022
A site displaying Rice University's O-week family tree .

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Adam Zawierucha 7 Dec 5, 2022