nav.brand
docs.title/NFT Collection

NFT Collection

Full PFP collection: allowlist + public mint, IPFS art, reveal, gallery

docs.viewTemplate

docs.h.overview

A complete multi-image ERC-721 drop: a public mint page with a live supply meter and a gallery of minted NFTs loaded straight from IPFS, a contract with a Merkle allowlist, per-wallet limits and a delayed reveal — plus a setup wizard that pins your whole collection + metadata to IPFS and reveals it on-chain, no scripts required.

NFT Collection ships a clean mint page: cover art, a live minted/total supply meter, a quantity selector, price, the connected wallet's owned count, and a gallery of every minted token that loads its art from IPFS (with automatic gateway fallback). The ERC-721 contract supports a Merkle allowlist phase, a public phase, per-wallet limits, a configurable price and a delayed reveal.

The setup wizard handles the part most templates skip: artwork. Upload a single ZIP of your images (plus an optional traits file — there's a downloadable example), and the wizard pins the images to IPFS via Pinata, generates the ERC-721 metadata (1.json…N.json) pointing at them, pins that too, sets the base URI and reveals it on-chain. It also takes a cover image (converted to PNG) and deploys the contract from your wallet.

Allowlists use a Merkle root from the included script. Everything else — name, price, supply, per-wallet limit — is env-driven and set in the wizard.

docs.h.included

  • Next.js app (App Router, TypeScript, Tailwind)
  • Collection.sol (ERC-721) + Hardhat
  • Merkle allowlist script (CSV → root + proofs)
  • Setup wizard: cover + artwork upload, IPFS pinning, in-browser deploy & reveal
  • Dockerfile + docker-compose, README

docs.h.contracts

  • Collection.sol — ERC-721 with a Merkle allowlist phase, a public mint, per-wallet limits, a configurable price and owner withdraw. tokenURI returns a hidden URI until you reveal, then serves baseURI/<id>.json — so you can launch before the art is final (OpenZeppelin ERC721 + Ownable + ReentrancyGuard + MerkleProof).

docs.h.stack

docs.stackLine

docs.chainsLine

docs.h.quickstart

docs.quickstartP

unzip nft-collection.zip && cd nft-collection
npm install
npm run dev

docs.quickstartUrl

docs.h.configure

docs.configureP

  1. docs.wizard.1
  2. docs.wizard.2
  3. docs.wizard.3
  4. docs.wizard.4
  5. docs.wizard.5
Tip · docs.configureTip

docs.configureP2

docs.h.customize

docs.h.branding

docs.brandingP

docs.brandingP2

docs.h.languages

docs.languagesP

docs.h.editing

docs.editingP

docs.h.configRef

docs.configRefP

  • docs.configRef.1
  • docs.configRef.2
Tip · docs.configRefTip

docs.h.deployContracts

docs.deployContractsP

# compile + copy artifacts the app/wizard use
npm run compile

# deploy to the network in your .env (RPC_URL + DEPLOYER_PRIVATE_KEY)
npm run deploy

docs.deployContractsP2

docs.h.deployApp

docs.h.vercel

  1. docs.vercel.1
  2. docs.vercel.2
  3. docs.vercel.3

docs.h.docker

docs.dockerP

# build + run; with no .env it opens the setup wizard
docker compose up --build

# once you have a .env, pass it in:
docker run --env-file .env -p 3003:3000 nft-collection

docs.dockerP2

docs.h.vps

docs.vpsP

npm install
npm run build
npm run start   # serves the production build

docs.h.checklist

  • docs.checklist.1
  • docs.checklist.2
  • docs.checklist.3
  • docs.checklist.4
  • docs.checklist.5

docs.h.support

docs.supportP