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 devdocs.quickstartUrl
docs.h.configure
docs.configureP
- docs.wizard.1
- docs.wizard.2
- docs.wizard.3
- docs.wizard.4
- docs.wizard.5
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
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 deploydocs.deployContractsP2
docs.h.deployApp
docs.h.vercel
- docs.vercel.1
- docs.vercel.2
- 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-collectiondocs.dockerP2
docs.h.vps
docs.vpsP
npm install
npm run build
npm run start # serves the production builddocs.h.checklist
- docs.checklist.1
- docs.checklist.2
- docs.checklist.3
- docs.checklist.4
- docs.checklist.5
docs.h.support
docs.supportP