Git Product home page Git Product logo

batch0.buidlguidl.com's Introduction

Welcome to BuidlGuidl Batch #0!

🧨 Congratulations on joining a BuidlGuidl Batch! You've completed some challenges in SpeedRunEthereum and gotten your feet wet in Scaffold-ETH, Solidity coding, deploying contracts, and basic front-end development. Now it's time to take the next step on your educational journey!

🧙‍♂️ Along with your fellow batch members and BuidlGuidl mentors you'll learn how to collaborate, meaningfully contribute to GitHub repositories, create and handle issues and pull requests, follow best practices in version control, and dive deeper into full-scale dApp development.

🔨 You will come out with all the tools needed to finish the remaining SpeedRunEthereum challenges and start actively contribute to open-source projects!


Table of Contents

  • Introduction
  • Getting Started
    • Selecting Issues to Tackle
  • Github Workflow
    • PR Reviews
  • Project Focus
  • Useful Resources

Introduction

Let's get you caught up on what this batch is all about and what you can expect.

Here's what you'll be doing :

  1. You'll start by introducing yourself to the batch and the mentors in a GitHub discussion.
  2. Next, you'll complete the Check-in Issue and 'check in' to our smart contract by writing a contract of your own.
  3. After that you'll move to the Personal Page Issue and create a personal page and use a pull request(PR) to send it to the batch repo.
  4. From there you will start choosing other open issues to work on, either on your own or in collaboration with other batch members.
  5. The final step is a full dApp chosen and created by the batch! (We will provide ideas on projects you can take on)

We aim to empower you with the skills of dApp development and collaborating with developers, and we will be with you every step of the way.

Getting Started

First, since our contract is deployed to the Optimism chain, you will want to make sure you have some Optimism Eth. The easiest way to get oEth that is to bridge some mainnet Eth to the Optimism chain using the Optimism Bridge. If you need more information or assistance with this, reach out in the Telegram group and we can provide information on why we deployed our contract here as opposed to a testnet or mainnet.

Then you will head to the open Introductions discussion in your batch's GitHub repo and make a post introducing yourself. Also feel free to introduce yourself in the batch Telegram channel as well if you want.

Next head to the Issues tab of your batch's Github repo. Once you complete Issue #1, move on to Issue #2. Everyone will complete the first two issues on their own, then can start taking on the other issues. Work and collaborate with your batch members in both Github and Telegram for a real-world experience. If you're working on an issue, looking to collaborate on an issue, or want feedback on an issue or pull request, shout out to your batch!

😲 Github can seem daunting! Take a look at our detailed guide on the "Fork and Pull" Github process here.

Selecting Issues to Tackle

Issues will be tagged with the type of work entailed, so choose based on the work you would like to contribute. When you decide on one, leave a comment on it that indicates you are working on that issue which helps avoid duplication of efforts. It's also a great way to demonstrate your commitment to the task. Remember this is a learning environment so it's okay if multiple people are working on the same issue concurrently.

Some examples of the issue tags are:

  • (for all): These are issues that everyone in the batch will complete on their own.
  • (good first issue): These will be simple issues that are good for those just starting out.
  • (contract): Smart contract work involving Solidity coding.
  • (front end): Work to improve the front end of your batch's site.

GitHub Workflow

Something important to learn from this is the workflow when collaborating in Github. Here are some good Github best practices:

  • Commenting on Issues: Comment on an Issue if your are working on it to avoid duplicating work. But, since this is for educational purposes, it is okay to work on an already claimed/completed issue for your own experience, or collaborate with others on it. If you run into problems or questions, reach out!
  • Issue and PR Descriptions: In the descriptions of issues and pull requests, try to be as descriptive as possible. Include any relevant information on the problem being solved, and what is being accomplished by any new code you have added. Screenshots and videos can be very helpful with this. This detailed approach makes it easier for anyone to review and handle PRs effectively.

You will all start out by completing issues, but this will change overtime and you may want to start creating your own issues for your batch to help with. This is critical in the learning process! Have an idea, bug report, discussion.. Create an Issue!

🚦 Remember: Batch members will have a variety of different experience levels, so contribute where you can, but also feel free to try something new! If you run into roadblocks and problems, talk it out with other members of your batch and the BuidlGuidl mentors!

PR Reviews

👷‍♂️ This batch will start with outside BuidlGuidl members managing the issues and pull requests, but as the batch progresses you'll get the opportunity to step into this role yourself.

So if you want to take your GitHub skills to the next level, start actively engaging in the PR management process. This includes reviewing PRs, participating in discussions, requesting changes, and eventually merging them. This is all part of the Github workflow and is very important for effective, real-world collaboration on open-source projects! You may have to shout out to your mentors to get access to accompolish this.

Remember that Continuous Integration/Continuous Deployment (CI/CD) is a crucial aspect of the development process, ensuring that changes are tested and deployed efficiently. The project likely includes automated CI/CD pipelines. These are set up to run tests, check code quality, and deploy updates automatically. It helps maintain code quality and ensures that contributions do not introduce errors.

Project Focus

The final step in the batch will be a project where you will all collaborate on a full-scale dApp! More information on this will become available from the mentors as the batch progresses.

Useful Resources

To help you make the most of your BuidlGuidl Batch experience, we've gathered some essential resources and guides:

  • Scaffold-Eth2: A modern, clean version of Scaffold-ETH with NextJS, RainbowKit, Wagmi and Typescript. Supports Hardhat and Foundry. You can find the repo here
  • Austin Griffith's YouTube: https://www.youtube.com/channel/UC_HI2i2peo1A-STdG22GFsA/videos
  • Scaffold-ETH2 Contribution Guide: If you're looking to contribute to our open-source projects, this guide provides valuable insights on how to get started. Check it out here.
  • PR Guide: For a detailed understanding of the pull request process, our guide is a great resource. You can find it here.

The Scaffold-ETH2 and PR guides are a great place to start, but you may have to mold the instructions to suite your needs!

batch0.buidlguidl.com's People

Contributors

miralsuthar avatar solo1g avatar carletex avatar yanvictorsn avatar zakgriffith avatar swolidity avatar edakturk14 avatar iafhurtado avatar jennyg0 avatar metoinside avatar

Stargazers

 avatar  avatar  avatar Akwuba Chris avatar Oghifo Divine avatar

Watchers

Damian Martinelli avatar  avatar Austin Griffith avatar  avatar Shiv Bhonde | shivbhonde.eth avatar

batch0.buidlguidl.com's Issues

Create your personal page

Goal

Create a PR with your personal page so it's displayed on the Batch site.

Creating the Batch page

  1. If you haven't done it already: fork & clone the repo, install dependencies, and create your own branch.
  2. Create a new file in packages/nextjs/pages/builders/[your-0xAddress].tsx
  3. You can have a little bio, avatar, address, links to your socials, etc.
    -> Keep it simple! (no heavy assets, etc.)

⚠️ Important Notes:

  • Pay special attention to linting, code format, etc.
  • Inspecting how other SE-2 components/pages are created is a great way to learn.
  • Make sure to read the README file for more guidance.

⚠️ If you are the first one to create your personal page, you'll need to create the builders folder in packages/nextjs/pages/.

Check-in with the BatchRegistry contract

Goal

Check-in into the BatchRegistry contract.

💡 This issue doesn't require you to raise a PR, just get yourself checked-in. Create a local branch to work on this.

BatchRegistry contract

The BatchRegistry contract is deployed at 0x0A7d97d392e7400D15460ae0C9799951a3719393 on Optimism.

You can find the contract code in packages/hardhat/contracts/BatchRegistry.sol. It's also available in the externalContracts.ts file in packages/nextjs/contracts/ (for front-end use in future issues).

You can see/interact with the contract on the Debug page of SE-2: Clone this repo, run yarn install and yarn start and go to http://localhost:3000/debug.

image

💡 You can check if you wallet address is in the allowList ;)

Checking-in

There are many ways to check-in into the Contract. Here we'll use the Scaffold-ETH 2 way ™.

1. Create your own branch

Before you begin, make sure you're working on a separate branch. Here's how:

  1. Clone the repo to your local machine (If you haven't already)
  2. Navigate to the cloned directory in your terminal.
  3. Create a new branch using git checkout -b [your-branch-name]

2. Spin up Your Local SE-2

Set up your local environment:

  1. Run yarn install (install dependencies)
  2. Run yarn start (starts SE2 front-end)
  3. Go to http://localhost:3000/. You should see SE-2 app.

💡 You'll notice that the dApp points to the Optimism chain. Check the scaffold.config.ts file to see how it's configured.

3. Understand the checkIn function

Go the the BatchRegistry.sol contract and check the checkIn function. You'll see that in order to check in, 3 things are required:

  1. The Batch is open (should be open already :D)
  2. Your EOA address is on the allowed list (ping us if you are not on the list)
  3. To be able to call the functions, they must be called from a contract (not an EOA!)

So you'll need to deploy a contract that calls the checkIn function on the BatchRegistry contract.

4. Set up the local environment

Instead of deploying a contract on Optimism, we'll deploy it locally so we can test.

  1. Start your local hardhat node: yarn chain
  2. Deploy the BatchRegistry contract: yarn deploy
    a. Check packages/hardhat/deploy/00_deploy_your_contract.ts
  3. Change the dApp chain to hardhat in scaffold.config.ts (targetNetwork should be chain.hardhat)
  4. Start the front-end if you haven't already: yarn start

If you go to the Debug page, you should see the BatchRegistry contract (but this time is deployed locally!)

💡 You'll need to tweak the deploy script to make yourself the owner of the BatchRegistry contract (so you can update the allowList, etc.)

5. Deploy a contract that calls the checkIn function

Now it's time to create a contract that calls the checkIn function. E.g.

  1. Create a CheckIn.sol contract in packages/hardhat/contracts/
  2. Declare an interface for the BatchRegistry contract (More info here: Interfaces in Solidity By Example)
  3. The constructor should receive the address of the BatchRegistry contract
  4. Implement the checkMeIn function in your contract
  5. Tweak the 00_deploy_your_contract.ts script to deploy your contract (and pass the address of the BatchRegistry contract)

Test it!

6. Check-in live

Once you have tested that your contract works, it's time to deploy it to Optimism and check-in live!

😯 We're dealing with real money now that we're deploying to Optimism! You should have some oEth from your onboarding process. And don't worry, the Optimism chain is much less expensive to deploy on than mainnet.

  1. Create a deployer account to deploy your contract (yarn generate)
  2. Send some Optimism ETH to it
  3. Check your account balances (yarn account)
  4. Tweak the 00_deploy_your_contract.ts script to only deploy your contract to Optimism (you don't want to deploy the BatchRegistry contract, which is already deployed by us!)
  5. Deploy your contract to Optimism (yarn deploy --network optimism)
  6. Change the dApp chain to Optimism in scaffold.config.ts
  7. Go to the Debug page and check that your contract is there
  8. Call the checkMeIn function!

✅ You should be checked-in! (You can check it by calling the yourContractAddress function)

In future issues, we'll be showing this info on the UI.

Change the Logo / title / subtitle

Goal

Update your batch's mainpage.

image

  • Create a random logo (or use Dall-E!) to generate a batch logo
  • title: Batch #{batch_number}
  • subtitle: Whatever you feel appropriate :)

Spinner showing on account status

When showing the account info an infinite spinner shows when you don't have your wallet connected.

It shouldn't show anything... and just load the spinner/info when you connect your wallet.

image

For more info: This is the PR #16 that implemented showing the account info.

Final project

🏰 BuidlGuidl 📝 Grant Application

BuidlGuidl wants to fund your next nights and weekend build with 0.25 ETH.

Think of it like a mini hackathon! ⛵️ Build something that you learn from, can possibly teach others, doesn't necessarily have to be a product or a big thing!

Don't stress about inventing something new; feel free to take an existing idea and add your unique touch to it. The key is, it should be something you can complete over a weekend.

🧾 What to Do:

  • Submit Your Idea: All we ask is that you write us a paragraph that describes what you want to build and let us 'okay' it, use this Google Form

🕵️‍♀️ We’ll look into the ideas and help you refine the project to build if needed. It might take some back & forth on the proposal!

👉 Form Deadline: Make sure to fill out the form and submit your idea by this Wednesday, 10th of Jan 2024.
👉 Project Due Date: All projects are due by the 21st of January 2024.

Project Submission Requirements:

  • 2-3 Minute Video: Each project must include a short video (2-3 minutes) showcasing what you’ve built.
  • Good README: Make sure your project repository has a well-documented README.

Looking forward to seeing your awesome projects!

Get the check-in count from the Batch Registry contract

Goal

There is a "To Be implemented" string in packages/nextjs/pages/index.tsx that should show the number of builders that have checked in to the contract.

We want to show the real count (reading from the BatchRegistry contract)

For more info about the contract

Show connected wallet info

Goal

When a user connects to the dApp, let's display 2 things:

  1. Is the connected address a member of the batch? (is the in the allowList)
  2. Is the connected address already checked in?

Feel free to place that info whenever you want. It could be just some icons that show next to the wallet for members.

For more info about the contract

Tweak the main page

Goal

Discuss with your peers what you would like the homepage to show! It can be a good opportunity to tweak the app colors/layout etc.

As in the previous issue, keep it simple (no big images, external assets, etc)

This can be an ongoing issue while you all keep implementing things.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.