{"id":18794427,"url":"https://github.com/chainstacklabs/procedural-nft-generator","last_synced_at":"2025-04-13T14:32:43.784Z","repository":{"id":113051570,"uuid":"536526771","full_name":"chainstacklabs/procedural-nft-generator","owner":"chainstacklabs","description":"Tutorial source code for \"Procedurally generated NFTs: Being an artist as a developer\" originally published on the Chainstack blog","archived":false,"fork":false,"pushed_at":"2024-04-10T11:35:20.000Z","size":40305,"stargazers_count":3,"open_issues_count":7,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-27T06:12:07.295Z","etag":null,"topics":["generative-art","nft","tutorial","tutorial-code"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chainstacklabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-14T10:29:07.000Z","updated_at":"2024-01-15T18:00:44.000Z","dependencies_parsed_at":"2024-11-07T21:31:48.229Z","dependency_job_id":"cf8a4376-28a7-44f7-8da1-1ef29fe083dc","html_url":"https://github.com/chainstacklabs/procedural-nft-generator","commit_stats":null,"previous_names":["chainstacklabs/procedural-nft-generator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainstacklabs%2Fprocedural-nft-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainstacklabs%2Fprocedural-nft-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainstacklabs%2Fprocedural-nft-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainstacklabs%2Fprocedural-nft-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chainstacklabs","download_url":"https://codeload.github.com/chainstacklabs/procedural-nft-generator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248728224,"owners_count":21152180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["generative-art","nft","tutorial","tutorial-code"],"created_at":"2024-11-07T21:29:25.100Z","updated_at":"2025-04-13T14:32:43.467Z","avatar_url":"https://github.com/chainstacklabs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Procedural NFT Generator Tutorial Repo\n\n## Description\nRepo containing all tutorial files from \"Procedurally generated NFTs: Being an artist as a developer\" originally published on the Chainstack blog. Contains scripts, contracts, ABI, BIN, and JSON files needed to create a new wallet, check its balance, compile an NFT contract, and mint NFTs using custom procedurally generated metadata on the Ethereum network.\n\n## Tutorial link\nFind the full tutorial article available on the Chainstack blog:\nhttps://chainstack.com/procedurally-generated-nfts/\n\n## Usage\nClone or fork this repo to a preferred location. Install dependencies by running in CLI:\n\n`npm install`\n\nGenerate a new wallet address and key pair by running in CLI:\n\n`node keys.js`\n\nCheck wallet balance by running in CLI:\n\n`node balance.js`\n\nDeploy the NFT minter smartcontract from the ABI \u0026 BIN files by running in CLI:\n\n`node deploy.js`\n\nMint an NFT with the metadata from one of the JSON files by running in CLI:\n\n`node mint.js`\n\nGenerate, merge and mint 3 image layers with corresponding metadata\n\n`node generate.js`\n\n## File list\n* keys.js - Script to generate a wallet address and key pair\n* balance.js - Script to check the balance of a wallet address\n* PCHNFT.sol - Smartcontract supporting functions to mint NFTs with custom tokenURI\n* PCHNFT_sol_PlaceholderHeroes.abi - ABI compiled from the NFT minter smartcontract\n* PCHNFT_sol_PlaceholderHeroes.bin - BIN compiled from the NFT minter smartcontract\n* node_modules_@openzeppelin*.* - ABI \u0026 BIN files compiled from the contract dependencies\n* deploy.js - Script to deploy the NFT minter smartcontract from the ABI \u0026 BIN files\n* testorius.json - JSON array containing metadata needed to mint the Testorius NFT (1/3)\n* lorema.json - JSON array containing metadata needed to mint the Lorema NFT (2/3)\n* sampli.json - JSON array containing metadata needed to mint the Sampli NFT (3/3)\n* mint.js - Script to mint an NFT with the metadata from one of the JSON arrays\n* .env - Dotenv file containing pre-formatted slots needed for key script variables\n* generate.js - Script to generate, merge and mint 3 image layers with corresponding metadata\n\n## Dependency list\n* Node endpoint - Get one for free at: https://console.chainstack.com/user/account/create\n* Web3.js - Collection of libraries for Web3 interaction: https://web3js.readthedocs.io/\n* @openzeppelin/contracts - Smartcontract library: https://github.com/OpenZeppelin/openzeppelin-contracts\n* Solc.js - Solidity compiler library installed globally: https://github.com/ethereum/solc-js\n* Dotenv - Environment file library to process key variables: https://github.com/motdotla/dotenv OR https://github.com/dotenv-org/dotenv-vault\n* random-words - Library that generates a set of random words with pre-set number: https://github.com/apostrophecms/random-words\n* text-to-image - Library that renders text into image: https://github.com/goyalabhi1305/tess-based-text-from-image\n* jdenticon - Library that generates a random icon based on text seed: https://github.com/dmester/jdenticon\n* canvas - Library that allows image drawing based on code input: https://github.com/Automattic/node-canvas\n* image-data-uri - Library that renders dataURI to image file: https://github.com/DiegoZoracKy/image-data-uri\n* merge-images - Library that merges several image layers into one: https://github.com/lukechilds/merge-images\n* axios - HTTP request parser to handle IPFS upload: https://github.com/axios/axios\n* form-data - Metadata generator library for file metadata uploaded to IPFS: https://github.com/form-data/form-data\n## End result\n* Contract: https://goerli.etherscan.io/address/0x144F7CF4F42FCb67D43d2B107694FFe52386D544\n* Testorius: https://goerli.etherscan.io/tx/0xb99e7c14cd012d6be9f1cd2de12fc4585f8c3e3a9b6b038d57987265d4d1da9a\n* Lorema: https://goerli.etherscan.io/tx/0xc5522987694a2eb97d6acca6f05a6a8707800e44c5f77d0f0871fc211a82a0d6\n* Sampli: https://goerli.etherscan.io/tx/0xf8db9208ebbc782ebaf5dbddcb1e372c02a5bf021489f855d4715527519fd6bc\n* Procedural: https://goerli.etherscan.io/tx/0x105522122b5f9a279ebc99a301dd6a32ed7b7d7761595b75aa73b9fd659cef10\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainstacklabs%2Fprocedural-nft-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchainstacklabs%2Fprocedural-nft-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainstacklabs%2Fprocedural-nft-generator/lists"}