Skip to content

updatesettings/nextjs-candy-machine-v2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BEEN ON HOLIDAY AND DOING IRL LIFE STUFF, BUT WILL GET BACK TO THIS SOON.

Metaplex Candy Machine V2 - Next.js

Tutorial by Update Settings

BETA RELEASE - Updates still being made

Need web3 help? Support Update Settings by becoming a Cursor holder to receive exclusive access to projects and get hands on web3 dev help by our team.

To Do:

  • Fix Presale Phase Header (page requires refresh)
  • Remove unused code
  • Performance optimization
  • Whitelist signup prevent duplicates
  • Animations

Setup Candy Machine

Create New Wallet

// Optional: Make a folder if you dont already have one
mkdir ~/my-solana-wallet

// Make wallet within folder
solana-keygen new --outfile ~/my-solana-wallet/my-keypair.json

// Get wallet address
solana-keygen pubkey ~/my-solana-wallet/my-keypair.json

// Use wallet address to verify with keypair
solana-keygen verify <PUBKEY> ~/my-solana-wallet/my-keypair.json

// Config wallet
solana config set --keypair  ~/my-solana-wallet/my-keypair.json

// Devnet Fund wallet
solana airdrop 1 <PUBKEY> --url https://api.devnet.solana.com

// Config Network (devnet)
solana config set --url https://api.devnet.solana.com

Create whitelist spl token

// Optional: Create Token w/ custom vanity
solana-keygen grind --starts-with US:1

// Create Token (If using custom vanity)
spl-token create-token <TOKEN WITH VANITY> --decimals 0

// Create Token (if NOT using custom vanity start here)
spl-token create-token --decimals 0

// Create token account
spl-token create-account <TOKEN>

// Create token supply
spl-token mint <TOKEN> <NUMBER TOKENS TO CREATE>

// Check token supply
spl-token balance <TOKEN>

Distribute SPL Tokens via Gumdrop (Optional)

// Create JSON file with dist list of wallet address
example-dist.json
[
  {
    "handle": "<DISTRIBUTION-METHOD-SPECIFIC-HANDLE>",
    "amount": <GUMDROP-CLAIM-ALLOWANCE>,
    ["edition": <EDITION-NUMBER>]
  },
]

// Run Gumdrop to distribute SPL token
npx ts-node js/packages/cli/src/gumdrop-cli.ts create -k <KEYPAIR> --claim-integration transfer --transfer-mint <SPL TOKEN> --distribution-method wallets --distribution-list example-dist.json

Set up config file

Civic pass disabled in this config

{
  "price": 1,
  "number": 310,
  "gatekeeper": null,
  "solTreasuryAccount": "XXXXpj1yKkPrzCy1zK96iGVFkDjuhw62aqKVsKXXXXX",
  "splTokenAccount": null,
  "splToken": null,
  "goLiveDate": "19 Jan 2022 13:00:00 PST",
  "endSettings": null,
  "whitelistMintSettings": {
    "mode": { "burnEveryTime": true },
    "mint": "61yn9rQEUetLhENEj73pGr3L1Rm8AjpK6DDYc1BYCikV",
    "presale": true,
    "discountPrice": 0
  },
  "hiddenSettings": null,
  "storage": "arweave", // arweave-sol for mainnet
  "ipfsInfuraProjectId": null,
  "ipfsInfuraSecret": null,
  "awsS3Bucket": null,
  "noRetainAuthority": false,
  "noMutable": false
}
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts upload -e devnet -k ~/my-solana-wallet/demo.json -cp config.json -c demo ./demo-assets --rpc-url https://api.devnet.solana.com
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts verify_upload -e devnet -k ~/my-solana-wallet/demo.json -cp config.json -c demo
// Mint one
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts mint_one_token -e devnet -k ~/my-solana-wallet/demo.json -c demo

// Mint multiple (example: 3)
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts mint_multiple_tokens --number 3 -e devnet -k ~/my-solana-wallet/demo.json -c demo

Install Metaboss

// Verify Keypair for creator (-t 90 needed due to network )
metaboss -t 90 sign all --keypair <PATH_TO_KEYPAIR> --candy-machine-id <CANDY_MACHINE_ID> --v2
// Update Candy Machine
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts update_candy_machine -e devnet -k ~/my-solana-wallet/demo.json -c demo
// * WARNING *
// This will break your candy machine and any other candy machines tied to the keypair.

// Recommend to run this after you have fully minted!

// Rec to run a dry version to view what will break
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts withdraw --dry -e devnet -k ~/my-solana-wallet/demo.json

// Official withdraw command
npx ts-node js/packages/cli/src/candy-machine-v2-cli.ts withdraw -e devnet -k ~/my-solana-wallet/demo.json

Run Front End

// Fork & Clone
git clone https://github.com/updatesettings/nextjs-candy-machine-v2.git

// Config .env
NEXT_PUBLIC_CANDY_MACHINE_ID=<CANDY MACHINE ID IN CACHE FILE>
NEXT_PUBLIC_SOLANA_NETWORK=devnet
NEXT_PUBLIC_SOLANA_RPC_HOST=https://api.devnet.solana.com
// If you are running the whitelist sign up page, then setup notion as well
NOTION_API_KEY=
NOTION_DATABASE_ID=

// Add Site Data .../data/siteData.js
// Important to add wallet address(es) of creators as this is how we pull the NFTs
// It's recommended to only use the wallet address(es) that are only associated
// to the collection and not tied to other collections
addresses: {
  creators: [
    "XXXXyKkPrzCy1zK96iGVFkDjuhw62aqKVXXXX",
  ],
},

// Set node version - it is recommended to nvm (node version manager)
nvm use

// Install packages
yarn install

// Run local
yarn dev

/////////////////////////////////////////

// Image URLS
// if you don't use Arweave for your NFTs, then you will need to update next.config.js
images: {
    domains: ["arweave.net", "www.arweave.net"],
},

Setup Build (Vercel)

// Login to vercel
// Set up new project
// Framework Preset: Next.js

// Config Environment Variables (as above)
// In Environment Variables you may need deactivate the CI if build is failing
CI=false