{"id":18149969,"url":"https://github.com/donguillotine/proposal-decentralized-app","last_synced_at":"2026-05-08T01:46:58.576Z","repository":{"id":258181286,"uuid":"868122791","full_name":"DonGuillotine/proposal-decentralized-app","owner":"DonGuillotine","description":"This DApp allows users to create, vote on and track proposals on the Ethereum blockchain.","archived":false,"fork":false,"pushed_at":"2024-10-20T18:00:03.000Z","size":1560,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T04:47:01.055Z","etag":null,"topics":["blockchain","decentralized-application","ethereum","ethersjs","react","smart-contracts","web3-frontend"],"latest_commit_sha":null,"homepage":"https://donguillotine.github.io/proposal-decentralized-app/","language":"JavaScript","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/DonGuillotine.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-05T14:37:07.000Z","updated_at":"2024-10-20T19:44:45.000Z","dependencies_parsed_at":"2024-10-17T23:33:31.348Z","dependency_job_id":"7b45d13b-fa9a-4323-978a-4c0d2eb123ba","html_url":"https://github.com/DonGuillotine/proposal-decentralized-app","commit_stats":null,"previous_names":["donguillotine/proposal-decentralized-app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonGuillotine%2Fproposal-decentralized-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonGuillotine%2Fproposal-decentralized-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonGuillotine%2Fproposal-decentralized-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonGuillotine%2Fproposal-decentralized-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DonGuillotine","download_url":"https://codeload.github.com/DonGuillotine/proposal-decentralized-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247563907,"owners_count":20958971,"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","decentralized-application","ethereum","ethersjs","react","smart-contracts","web3-frontend"],"created_at":"2024-11-02T00:06:51.628Z","updated_at":"2026-05-08T01:46:58.543Z","avatar_url":"https://github.com/DonGuillotine.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Proposal DApp\n\n![image](https://github.com/user-attachments/assets/ac3ecc1a-40d5-4ff8-807f-aacdead885ae)\n\nWelcome to the **Proposal DApp** project! This decentralized application (DApp) allows users to create, vote on, and track proposals on the Ethereum blockchain. The contract stores and manages proposals, tracks votes, and executes actions based on the results. The frontend is built using React and uses various Ethereum libraries such as Ethers.js to interact with the smart contract.\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [Smart Contract](#smart-contract)\n- [Running the Application](#running-the-application)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Overview\n\nThe **Proposal DApp** is designed to be a governance tool where users can create proposals and allow others to vote on them. The contract tracks the proposals, the number of votes they receive, and whether they've been executed. The frontend interfaces with the Ethereum blockchain via smart contracts and reads data using `multicall` for efficient batching of blockchain calls.\n\n## Features\n\n- **Create Proposals**: Users can submit proposals that include a description, the amount of ETH requested, the minimum number of votes needed to pass, and the voting deadline.\n- **Vote on Proposals**: Users can vote on proposals, which will be counted by the contract.\n- **Track Proposals**: View the list of proposals, including their description, vote count, execution status, and deadline.\n- **Real-Time Updates**: The DApp listens for blockchain events to provide real-time updates, such as when a new proposal is created or a vote is cast.\n- **Contract Balance Display**: The balance of the smart contract is displayed at the top of the page in ETH.\n\n## Prerequisites\n\nBefore setting up the project, ensure you have the following installed:\n\n- Node.js (v16+)\n- Yarn or npm\n- MetaMask or other Ethereum-compatible wallet extensions\n- Access to an Ethereum network (e.g., Goerli, Sepolia, or a local testnet)\n\n## Installation\n\n1. **Clone the repository**:\n\n   ```bash\n   git clone https://github.com/DonGuillotine/proposal-decentralized-app.git\n   cd proposal-decentralized-app\n   ```\n\n2. **Install dependencies**:\n\n   Using Yarn:\n\n   ```bash\n   yarn install\n   ```\n\n   Or using npm:\n\n   ```bash\n   npm install\n   ```\n\n3. **Set up environment variables**:\n\n   Create a `.env` file in the root of the project and add the environment variables.\n\n## Smart Contract\n\nThe DApp interacts with a smart contract responsible for creating proposals, casting votes, and executing proposals. You can find the ABI of this contract in the `ABI/proposal.json` file, and it is used by the frontend to encode/decode function calls.\n\nKey contract methods include:\n\n- **proposals(id)**: Fetches the proposal details by ID.\n- **proposalCount()**: Returns the total number of proposals.\n- **vote(proposalId)**: Allows users to vote for a specific proposal.\n- **createProposal(description, amount, minVotesToPass, deadline)**: Allows users to create a new proposal.\n\n## Running the Application\n\n1. **Start the development server**:\n\n   Using Yarn:\n\n   ```bash\n   yarn dev\n   ```\n\n   Or using npm:\n\n   ```bash\n   npm run dev\n   ```\n\n2. Open [http://localhost:3000](http://localhost:3000) to view the app in the browser.\n\n3. Connect your Ethereum wallet (e.g., MetaMask) to the correct network and interact with the application.\n\n## Contributing\n\nContributions are welcome! Please follow these steps to contribute:\n\n1. Fork the repository.\n2. Create a new branch (`git checkout -b feature/your-feature`).\n3. Make your changes.\n4. Commit your changes (`git commit -m 'Add some feature'`).\n5. Push to the branch (`git push origin feature/your-feature`).\n6. Open a pull request.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonguillotine%2Fproposal-decentralized-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdonguillotine%2Fproposal-decentralized-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonguillotine%2Fproposal-decentralized-app/lists"}