{"id":24072564,"url":"https://github.com/jongan69/kudos","last_synced_at":"2025-10-29T07:47:47.956Z","repository":{"id":99293988,"uuid":"564666694","full_name":"jongan69/kudos","owner":"jongan69","description":"An app that pays users to do favors for one another using Web3 Auth and Solidity. Built under Chainlink Hackathon 2022","archived":false,"fork":false,"pushed_at":"2024-01-10T08:29:48.000Z","size":10536,"stargazers_count":2,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-09T17:17:57.831Z","etag":null,"topics":["blockchain","dapp","ethereum","react-native","solidity-contracts","web3","web3auth"],"latest_commit_sha":null,"homepage":"https://kudos-taupe.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jongan69.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-11-11T08:02:36.000Z","updated_at":"2025-01-06T22:55:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"f4ee9859-73e5-4bcd-b759-9182448790d7","html_url":"https://github.com/jongan69/kudos","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongan69%2Fkudos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongan69%2Fkudos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongan69%2Fkudos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongan69%2Fkudos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jongan69","download_url":"https://codeload.github.com/jongan69/kudos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240941531,"owners_count":19882063,"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":["blockchain","dapp","ethereum","react-native","solidity-contracts","web3","web3auth"],"created_at":"2025-01-09T17:18:27.834Z","updated_at":"2025-10-29T07:47:42.923Z","avatar_url":"https://github.com/jongan69.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kudos - Give to get\n\n[![CodeQL](https://github.com/jongan69/kudos/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/jongan69/kudos/actions/workflows/codeql-analysis.yml)\n\n\n\n-----\n\nA full stack monorepo with\n\n- React Native\n- Nextjs\n- Web3Auth\n- Solidity\n- Chainlink VRF\n- Filecoin NFT.storage\n\nbuilt under The Chainlink 2022 Hackathon \u003chttps://devpost.com/software/kudos-bzion8\u003e\n\nTest Net Deploy:\n\n## LATEST KUDOS TOKEN CONTRACT ADDRESS (GOERLI): 0x67714a689C38BfEbe0aD191a349aB3084Df415A8\n\n## LATEST FAVORS CONTRACT ADDRESS (GOERLI): 0x693f7fe29CaE09F2110E9dA885769304e6f5cacE\n\n[Remix](https://remix.ethereum.org/#url=https://docs.chain.link/samples/VRF/VRFD20.sol\u0026optimize=false\u0026runs=200\u0026evmVersion=null\u0026version=soljson-v0.8.7+commit.e28d00a7.js)\n\n-----\n\nMobile: \u003chttps://exp.host/@jongan69/kudos\u003e\n\nWeb: \u003chttps://kudos-taupe.vercel.app/sign-in\u003e\n\n## Setup\n\n1. Create Web3Auth.io Account at \u003chttps://dashboard.web3auth.io/\u003e\n2. Copy into credentials .env and constant.js\n   Note: `WEB_API_ROUTES` would be the URL of the deployed nextjs app ie: vercel\n3. yarn install inside the root and web directories\n\n### For smart contract functionality\n\n   1. Receive Test Link from \u003chttps://faucets.chain.link/\u003e\n   2. Create and Fund a VRF Subscription at \u003chttps://vrf.chain.link/\u003e\n   3. Deploy the `contracts/KudosToken.sol` via \u003chttps://remix.ethereum.org/\u003e with a Total Token Supply\n   4. Copy Token Contract Address\n   5. Deploy the `contracts/FavorsV2.sol` via \u003chttps://remix.ethereum.org/\u003e with subscription ID and Token Contract Address\n   6. Add Favor Contract Address to .env file\n\n## Usage\n\n`yarn ios` - Run iOS App\n\n`yarn android` - Run Android App\n\n`yarn web` - Start Nextjs app\n\n### Features\n\n- Built using Web3auth\n- Has nhost for Graph QL DB if needed\n- Has Nextjs App for API\n- File Reading Functions\n- Has Smart Contract for Favor Posting, Retrieving, Completing, and payment\n\nin a new `.env`\n   backendUrl: \"YOUR_NHOST_BACKEND_URL\",\n\nin `App.js`\n  clientStorageType: \"expo-secure-storage\",\n\nTo Run Nextjs App:\n  `yarn web` in root directory\n\n### To do\n\n- [x] Expo React Native App\n- [x] Nextjs App\n- [x] Web3Auth - React Native SDK\n- [x] Thirdwebjs Auth - Nextjs SDK\n- [x] ERC20 Contract\n- [x] Chainlink VRF\n- [x] FavorsV2 Contract\n- [x] Mobile App Smart Contract Function Integration:\n        1. Post Button =\u003e postFavor(text)\n        2. Refresh Favors Button =\u003e getAllIncompleteFavors()\n        3. Offers Tab =\u003e getMyFavors()\n        4. Accept Button =\u003e acceptFavor\n        5. Mark Completed Button =\u003e completeFavor(favorId)\n- [ ] Fix Nextjs App (Connect to Deployed Contract)\n- [ ] User Profile Contract / nHost\n- [ ] Use React-Native-Async-Storage for Persistent Login State and Data\n- [ ] Review +/- Test\n\nMessage Signing\n\n`\nconst signMessage = async () =\u003e {\n    try {\n      setConsole(\"Signing message\");\n      const ethersProvider = ethers.getDefaultProvider(providerUrl);\n      const wallet = new ethers.Wallet(key, ethersProvider);\n      const originalMessage = \"YOUR_MESSAGE\";\n      // Sign the message\n      const signedMessage = await wallet.signMessage(originalMessage);\n      console.log(signedMessage)\n    } catch (e) {\n      console.log(e)\n    }\n  };\n`\n\nTransaction Sending\n\n`\nconst sendTransaction = async () =\u003e {\n    try {\n      setConsole(\"Sending transaction\");\n      const ethersProvider = ethers.getDefaultProvider(providerUrl);\n      const wallet = new ethers.Wallet(key, ethersProvider);\n      const destination = \"0x40e1c367Eca34250cAF1bc8330E9EddfD403fC56\";\n      // Convert 1 ether to wei\n      const amount = ethers.utils.parseEther(\"0.001\");\n      // Submit transaction to the blockchain\n      const tx = await wallet.sendTransaction({\n        to: destination,\n        value: amount,\n        maxPriorityFeePerGas: \"5000000000\", // Max priority fee per gas\n        maxFeePerGas: \"6000000000000\", // Max fee per gas\n      });\n      console.log(tx)\n    } catch (e) {\n      console.log(e)\n    }\n  };\n`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongan69%2Fkudos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjongan69%2Fkudos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongan69%2Fkudos/lists"}