Inspiration
The project drew inspiration from a similar concept: just as in online games where you receive appropriate rewards for completing quests, the joy and motivation derived from receiving rewards are sometimes immeasurable. What if we could bring this into reality? There are numerous open-source projects in the world, each encompassing a multitude of tasks. Imagine treating these tasks as quests with rewards... wouldn't that be interesting?
What it does
The GitHub Rewards Program enables the owners of open-source projects to reward contributors with cryptocurrency when they successfully address tasks related to the project. This incentivizes contributors to actively engage in the project and make meaningful contributions.

This diagram describes the intended goal of our project at a high level. Essentially, the owner of a GitHub repository can create a list of issues that currently need to be worked on, and reward anyone who completes an issue with a crypto reward, paid in whichever crypto the contributor decides.
How we built it

This diagram takes the first diagram and expands on it on a more technical level, showing the exact data that gets passed around from one task to another and how all services interconnect with one another.
In general here are the services we intended to use for this project:
- Chainlink CCIP to allow the repo admins to manage issues (e.g. create an issue) which are saved into the main contract
- Chainlink CCIP to allow a contributor to join an issue (e.g. join an issue, leave an issue) on the main contract
- Chainlink Upkeep that starts as soon as a GitHub issue is created that triggers a Chainlink Function at a fixed interval to check whether a Github issue was marked as completed or not off-chain
- If the GitHub issue is marked as completed, it'll trigger the main contract to disperse the reward to the contributor.
- GitHub app that is installed by the repo admin onto the desired repo which allows the Chainlink Function to query the repo issue API data
- React.js for the decentralized client with TailwindCSS
- Ethers.js and Metamask modules to connect our client to the deployed contracts
Challenges we ran into
- Challenging to learn new concepts at a technical level, especially with little knowledge about the subject
- Difficult to debug contracts that were deployed on-chain
- Contracts and transactions deployed on Ethereum Sepolia were slow and made testing slower
- Need more time to finish implementation
Accomplishments that we're proud of
- Learned a lot about Web3, Chainlink, and Blockchain in general
What we learned
- How to work with Chainlink Functions
- Learned about Charinlink services (Upkeep, CCIP)
- Learned about Github App development (app JWT authentication and REST API interface)
What's next for GitHub Rewards Program
- Finish implementing the CCIP interactions
- Debug the Upkeep more to figure out why it isn't triggering the Chailink Function
- Finish the web UI/UX interaction with the main contract
Built With
- chainlink
- github-apps
- hardhat
- solidity
- typescript

Log in or sign up for Devpost to join the conversation.