Decentralized crowd funding platform where user can start fundraising , anyone can contribute & Fund riser need permission of contributor before withdrawing amount from contract .
Crowd funding
https://user-images.githubusercontent.com/55044734/164529677-27af29f2-96d6-4ce6-bb61-c1f0c63a3beb.mp4
Project features :bulb:
- [x] User can start a fundraising.
- [x] Anyone can contribute.
- [x] End project if targeted contribution amount reached.
- [x] Expire project if targeted amount not fulfills between deadline.
- [x] Contributors can withdraw contributed amount if project expire.
- [x] Owner need to request contributors for withdraw amount.
- [x] Owner can withdraw amount if 50% contributors agree.
- [x] Connect with waller.
Tech stack & packages used 📦
| package | explain | | ------------------------------------------------------------------- | --------------------------------------------------------------------- | | Next.js | For building frontend | | solidity | For writting smart contracts | | tailwind css | For building design | | ether.js | Web3 client (contract testing ). | | web3.js | Web3 client (Frontend Next.js). | | Chai | javascript testing framework. | | react-toastify | For Notification. | | hardhat | Ethereum development environment. | | Redux | For managing and centralizing application state. |
How to run :runner: :
- Run hardhat node
npx hardhat node
- Run test cases
npx hardhat test
- Connect HardHat Account to Metamask
- Deploy contract in local hardhat node
npx hardhat run scripts/deploy.js --network localhost
- Run Next.js frontend
cd client
npm run dev
- Connect account to website
Web3.js
new web3.eth.Contract(jsonInterface[, address][, options])
.on('transactionHash', function(hash){ ... })
.on('error', function(error){ ... })
contractName.events.EventName([options][, callback])
- An array with the past event Objects, matching the given event name and filter.
contractName.getPastEvents(EventName[, options][, callback])
Hardhat commands
npx hardhat accounts
npx hardhat compile
npx hardhat clean
npx hardhat test
npx hardhat node
node scripts/deploy.js
npx hardhat help
npx hardhat run scripts/deploy.js --network <network name>