{"id":23235772,"url":"https://github.com/hack-light/scaffold-eth-challenges","last_synced_at":"2025-10-07T23:09:38.700Z","repository":{"id":179623580,"uuid":"663118314","full_name":"Hack-Light/scaffold-eth-challenges","owner":"Hack-Light","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-15T12:47:20.000Z","size":31812,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"challenge-0-simple-nft","last_synced_at":"2025-09-13T00:52:17.055Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CSS","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/Hack-Light.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":"2023-07-06T15:34:09.000Z","updated_at":"2023-07-06T15:41:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"9bd7076c-db0c-42ef-8cb4-e9bbf4b8f1ea","html_url":"https://github.com/Hack-Light/scaffold-eth-challenges","commit_stats":null,"previous_names":["hack-light/scaffold-eth-challenges"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Hack-Light/scaffold-eth-challenges","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hack-Light%2Fscaffold-eth-challenges","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hack-Light%2Fscaffold-eth-challenges/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hack-Light%2Fscaffold-eth-challenges/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hack-Light%2Fscaffold-eth-challenges/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hack-Light","download_url":"https://codeload.github.com/Hack-Light/scaffold-eth-challenges/tar.gz/refs/heads/challenge-0-simple-nft","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hack-Light%2Fscaffold-eth-challenges/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278861029,"owners_count":26058632,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-12-19T03:29:30.709Z","updated_at":"2025-10-07T23:09:38.684Z","avatar_url":"https://github.com/Hack-Light.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏗 scaffold-eth | 🏰 BuidlGuidl\n\n## 🚩 Challenge 0: 🎟 Simple NFT Example 🤓\n\n🎫 Create a simple NFT to learn basics of 🏗 scaffold-eth. You'll use [👷‍♀️ HardHat](https://hardhat.org/getting-started/) to compile and deploy smart contracts. Then, you'll use a template React app full of important Ethereum components and hooks. Finally, you'll deploy an NFT to a public network to share with friends! 🚀\n\n🌟 The final deliverable is an app that lets users purchase and transfer NFTs. Deploy your contracts to a testnet then build and upload your app to a public web server. Submit the url on [SpeedRunEthereum.com](https://speedrunethereum.com)!\n\n💬 Meet other builders working on this challenge and get help in the [Challenge 0 Telegram](https://t.me/+Y2vqXZZ_pEFhMGMx) or our [Challenge 0 Discord](https://discord.com/channels/778001331091800065/908425500643455046)\n\n---\n\n# Checkpoint 0: 📦 Install 📚\n\nWant a fresh cloud environment? Click this to open a gitpod workspace, then skip to Checkpoint 1 after the tasks are complete.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/scaffold-eth/scaffold-eth-challenges/tree/challenge-0-simple-nft)\n\nRequired: \n* [Git](https://git-scm.com/downloads)\n* [Node](https://nodejs.org/en/download/) (Use Version 18 LTS)\n* [Yarn](https://classic.yarnpkg.com/en/docs/install/#mac-stable)\n\n(⚠️ Don't install the linux package `yarn` make sure you install yarn with `npm i -g yarn` or even `sudo npm i -g yarn`!)\n\n```sh\ngit clone https://github.com/scaffold-eth/scaffold-eth-challenges.git challenge-0-simple-nft\n```\n```sh\ncd challenge-0-simple-nft\ngit checkout challenge-0-simple-nft\nyarn install\nyarn chain\n```\n\n\u003e in a second terminal window, start your 📱 frontend:\n\n```sh\ncd challenge-0-simple-nft\nyarn start\n```\n\n\u003e in a third terminal window, 🛰 deploy your contract:\n\n```sh\ncd challenge-0-simple-nft\nyarn deploy \n```\n\n\u003e You can `yarn deploy --reset` to deploy a new contract any time.\n\n📱 Open http://localhost:3000 to see the app\n\n---\n\n# Checkpoint 1: ⛽️  Gas \u0026 Wallets 👛\n\n\u003e ⛽️ You'll need to get some funds from the faucet for gas. \n\n![image](https://user-images.githubusercontent.com/2653167/142483294-ff4c305c-0f5e-4099-8c7d-11c142cb688c.png)\n\n\u003e 🦊 At first, please **don't** connect MetaMask. If you already connected, please click **logout**:\n\n![image](https://user-images.githubusercontent.com/2653167/142484483-1439d925-8cef-4b1a-a4b2-0f022eebc0f6.png)\n\n\n\u003e 🔥 We'll use **burner wallets** on localhost...\n\n\n\u003e 👛 Explore how **burner wallets** work in 🏗 scaffold-eth by opening a new *incognito* window and navigate it to http://localhost:3000. You'll notice it has a new wallet address in the top right. Copy the incognito browsers' address and send localhost test funds to it from your first browser: \n\n![image](https://user-images.githubusercontent.com/2653167/142483685-d5c6a153-da93-47fa-8caa-a425edba10c8.png)\n\n\u003e 👨🏻‍🚒 When you close the incognito window, the account is gone forever. Burner wallets are great for local development but you'll move to more permanent wallets when you interact with public networks.\n\n---\n\n# Checkpoint 2: 🖨 Minting \n\n\u003e ✏️ Mint some NFTs!  Click the `MINT NFT` button in the YourCollectables tab.  \n\n![MintNFT](https://user-images.githubusercontent.com/12072395/145692116-bebcb514-e4f0-4492-bd10-11e658abaf75.PNG)\n\n\n👀 You should see your collectibles start to show up:\n\n![nft3](https://user-images.githubusercontent.com/526558/124386983-48965300-dcb3-11eb-88a7-e88ad6307976.png)\n\n👛 Open an **incognito** window and navigate to http://localhost:3000 \n\n🎟 Transfer an NFT to the incognito window address using the UI:\n\n![nft5](https://user-images.githubusercontent.com/526558/124387008-58ae3280-dcb3-11eb-920d-07b6118f1ab2.png)\n\n👛 Try to mint an NFT from the incognito window. \n\n\u003e Can you mint an NFT with no funds in this address?  You might need to grab funds from the faucet to pay the gas!\n\n🕵🏻‍♂️ Inspect the `Debug Contracts` tab to figure out what address is the `owner` of `YourCollectible`?\n\n🔏 You can also check out your smart contract `YourCollectible.sol` in `packages/hardhat/contracts`.\n\n💼 Take a quick look at your deploy script `00_deploy_your_contract.js` in `packages/hardhat/deploy`.\n\n📝 If you want to make frontend edits, open `App.jsx` in `packages/react-app/src`.\n\n---\n\n# Checkpoint 3: 💾 Deploy it! 🛰\n\n🛰 Ready to deploy to a public testnet?!?\n\n\u003e Change the `defaultNetwork` in `packages/hardhat/hardhat.config.js` to `sepolia`\n\n![Challenge-0-sepolia](https://user-images.githubusercontent.com/12072395/220195061-b9f726d2-3feb-46eb-9c6f-19c84299c0ec.PNG)\n\n🔐 Generate a **deployer address** with `yarn generate`\n\n![nft7](https://user-images.githubusercontent.com/526558/124387064-7d0a0f00-dcb3-11eb-9d0c-195f93547fb9.png)\n\n👛 View your **deployer address** using `yarn account` \n\n![nft8](https://user-images.githubusercontent.com/526558/124387068-8004ff80-dcb3-11eb-9d0f-43fba2b3b791.png)\n\n⛽️ Use a faucet like [allthatnode.com/faucet/ethereum.dsrv](https://www.allthatnode.com/faucet/ethereum.dsrv) or [web.getlaika.app/faucets](https://web.getlaika.app/faucets) to fund your **deployer address**.\n\n\u003e ⚔️ **Side Quest:** Keep a 🧑‍🎤 [punkwallet.io](https://punkwallet.io/) on your phone's home screen and keep it loaded with testnet eth. 🧙‍♂️ You'll look like a wizard when you can fund your **deployer address** from your phone in seconds. \n\n🚀 Deploy your NFT smart contract:\n\n```sh\nyarn deploy\n```\n\n\u003e 💬 Hint: You can set the `defaultNetwork` in `hardhat.config.js` to `sepolia` OR you can `yarn deploy --network sepolia`. \n\n---\n\n# Checkpoint 4: 🚢 Ship it! 🚁\n\n\u003e ✏️ Edit your frontend `App.jsx` in `packages/react-app/src` to change the `targetNetwork` to `NETWORKS.sepolia`:\n\n![Challenge-0-sepolia-app](https://user-images.githubusercontent.com/12072395/220204549-02b86b70-284e-4d46-a867-e9e3366cd9ea.PNG)\n\nYou should see the correct network in the frontend (http://localhost:3000):\n\n![challenge-0-sepolia-wallet](https://user-images.githubusercontent.com/12072395/220204591-805e38ca-be8f-4534-b05d-a0ec7a2c7949.PNG)\n\n\u003e 🦊 At this moment, you will need to connect the dapp to a browser wallet where you have some ether available to mint tokens. Again, you can use a faucet like [https://www.allthatnode.com/faucet/ethereum.dsrv]. Keep in mind that the address you generated in the previous step to deploy the contract will likely be different from the one you have configured in your wallet.\n\n🎫 Ready to mint a batch of NFTs for reals?  Use the `MINT NFT` button.\n\n![MintNFT2](https://user-images.githubusercontent.com/12072395/145692572-d61c971d-7452-4218-9c66-d675bb78a9dc.PNG)\n\n\n📦 Build your frontend:\n\n```sh\nyarn build\n```\n\n💽 Upload your app to surge:\n```sh\nyarn surge\n```\n(You could also `yarn s3` or maybe even `yarn ipfs`?)\n\n\u003e  😬 Windows users beware!  You may have to change the surge code in `packages/react-app/package.json` to just `\"surge\": \"surge ./build\",`\n\n⚙ If you get a permissions error `yarn surge` again until you get a unique URL, or customize it in the command line. \n\n⚠️ Run the automated testing function to make sure your app passes\n\n```sh\nyarn test\n```\n![testOutput](https://user-images.githubusercontent.com/12072395/152587433-8314f0f1-5612-44ae-bedb-4b3292976a9f.PNG)\n\n---\n\n# Checkpoint 5: 📜 Contract Verification\n\nUpdate the `api-key` in `packages/hardhat/package.json` file. You can get your key [here](https://etherscan.io/myapikey).\n\n![Screen Shot 2021-11-30 at 10 21 01 AM](https://user-images.githubusercontent.com/9419140/144075208-c50b70aa-345f-4e36-81d6-becaa5f74857.png)\n\nNow you are ready to run the `yarn verify --network your_network` command to verify your contracts on etherscan 🛰\n\n\u003e It is okay if it says your contract is already verified.  Copy the address of YourCollectable.sol and search it on sepolia Etherscan to find the correct URL you need to submit this challenge.\n\n---\n\n# Checkpoint 6: 💪 Flex!\n\n👩‍❤️‍👨 Share your public url with a friend and ask them for their address to send them a collectible :)\n\n![nft15](https://user-images.githubusercontent.com/526558/124387205-00c3fb80-dcb4-11eb-9e2f-29585e323037.gif)\n\n---\n\n# ⚔️ Side Quests\n\n## 🐟 Open Sea\n\n\u003e 🐃 Want to see your new NFTs on Opensea?  Head to [Testnets Opensea](https://testnets.opensea.io/)\n\n\u003e 🎫 Make sure you have minted some NFTs on your Surge page, then connect to Opensea using that same wallet.\n\n![nft14](https://user-images.githubusercontent.com/12072395/188957491-bb5eeaf9-5b3c-4667-9d75-9f88bc7acc5d.PNG)\n\n\u003e You can see your collection of shiny new NFTs on a testnet!\n\n(It can take a while before they show up, but here is an example:)\nhttps://testnets.opensea.io/assets/0xc2839329166d3d004aaedb94dde4173651babccf/1\n\n## 🔶 Infura\n\u003e You will need to get a key from infura.io and paste it into constants.js in packages/react-app/src:\n\n![nft13](https://user-images.githubusercontent.com/526558/124387174-d83c0180-dcb3-11eb-989e-d58ba15d26db.png)\n\n---\n\n\u003e 🏃 Head to your next challenge [here](https://speedrunethereum.com).\n\n\u003e 💬 Meet other builders working on this challenge in the [Challenge 0 telegram channel](https://t.me/+Y2vqXZZ_pEFhMGMx)!!!\n\n\u003e 👉 Problems, questions, comments on the stack? Post them to the [🏗 scaffold-eth developers chat](https://t.me/joinchat/F7nCRK3kI93PoCOk)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhack-light%2Fscaffold-eth-challenges","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhack-light%2Fscaffold-eth-challenges","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhack-light%2Fscaffold-eth-challenges/lists"}