Moving git to ipfs, where each repository is controlled through a smart contract + leaving tips on issues to give maintainer incentive to work on them
The idea was to create a decentralized GitHub with Gitcoin functionality.
I created a tiny git client, with which is it possible to add a file to a repository and to push those files to IPFS. The CID is than written into a Smart Contract, which is deployed on the Matic Testnet.
In order to create a repository smart contract, a user has to register his repository, by calling the repository factory contract. The factory contract is verifying that there is no other repository with the same name. If the verification passed, a new smart contract is deployed. This repository smart contract keeps head cid (current state) and the history of pushed cids. It also tracks the issues created by users.
Once you go on the Website, you are able to search for repositories, look up the files that are pushed to ipfs, create an issue with a bounty and leave a tip for the owner of the repository. If you connect with MetaMask, a mug icon appears next to the repository name. Click it in order to leave the owner of the repository a tip (maybe for a coffee?). If you experience problems with the repository, open an issue and leave a bounty for the owner or even maybe someone else, who is able to solve the problem :)
The git client is written in Python3
Smart Contracts are in Solidity and deployed to the Matic testnetwork
Frontend is made with vuejs
Files are stored on an ipfs daemon running on localhost
ENS subdomain is used for the facotry contract on Matic. This can be extended to give each repository its own subdomain :)
In order to resolve the ENS entry, which is on Goerli, I am using Pocket Networks RPC url.