A decentralized voting application for the Ethiopian Election 2018.
- 🗳️ Decentralized voting on Ethereum
- 🔗 MetaMask wallet integration
- 📊 Real-time vote counting and percentages
- 🚫 Prevents double voting
Before deploying, make sure you have:
- Node.js (v16 or higher)
- MetaMask wallet with Sepolia ETH
- Infura/Alchemy account (for RPC access)
npm install
# Copy the example environment file
cp .env.example .env
# Edit .env with your values:
# - PRIVATE_KEY: Your wallet private key (with Sepolia ETH)
# - SEPOLIA_RPC_URL: Your Infura/Alchemy Sepolia RPC URL
# - ETHERSCAN_API_KEY: (Optional) For contract verification
Get free Sepolia testnet ETH from:
# Compile the contract
npm run compile
# Deploy to Sepolia testnet
npm run deploy:sepolia
The deployment script will:
- Deploy the Voting contract with 6 Ethiopian political parties
- Display the contract address
- Save deployment info to
deployment.json
After deployment, update the contract address in src/hooks/useVoting.js
:
const CONTRACT_ADDRESS = 'YOUR_DEPLOYED_CONTRACT_ADDRESS'
npm run dev
Visit http://localhost:5173
and connect your MetaMask wallet to start voting!
- Frontend: React, Vite, Tailwind CSS
- Blockchain: viem, Hardhat
- Network: Ethereum Sepolia Testnet
- Wallet: MetaMask integration