This repository contains a decentralized attendance certification system built on Ethereum. Create, distribute, and verify digital attendance badges as NFTs with unique metadata and IPFS storage.
- Digital Badges: ERC-721 NFTs for event attendance proof
- IPFS Integration: Decentralized image and metadata storage
- Multi-Network Support: Deploy on Ethereum, Sepolia, Polygon, and local networks
- Verification System: Real-time attendance verification on blockchain
- Custom Metadata: Unique badge metadata for each participant
- Modern UI: React-based responsive frontend
Before you begin, ensure you have:
- Node.js (v18 or higher)
- npm or yarn
- MetaMask or compatible Ethereum wallet
- Testnet ETH (for Sepolia deployment). You can get some on Alchemy Faucet or Google Faucet
The first things you need to do are cloning this repository and installing its dependencies:
git clone https://github.com/Mongetro/poap-plus.git
cd poap-plus
npm installSet up environment variables
Create a .env file in the project root :
cp .env.example .envPS :
Once you have copied the .env file, configure all environment variables according to the instructions included in the file.
Compile your smart contract :
npx hardhat compileYou can deploy your smart contract on a local network like Hardhat or on Ethereum testnets. In our case, we will use the Sepolia testnet.
npx hardhat run scripts/deploy.js --network sepoliaNavigate to frontend directory
cd frontendInstall frontend dependencies
npm installCreate a .env file in the frontend directory:
cp .env.example .envPS :
Once you have copied the .env file, configure all environment variables according to the instructions included in the file.
Run development server
npm run devThe Decentralized Application (dApp) will start and typically be available at http://localhost:5173/.
You will need to have a compatible Ethereum wallet, such as MetaMask installed and listening to the network you have chosen to deploy your smart contract on ( sepolia in our case).
- Open the application in your browser at http://localhost:5173/
- Connect your wallet (MetaMask)
- Ensure you're on the correct network (Localhost, Sepolia, etc.)
- Navigate to "Create Event"
- Fill in event details (name, date, organizer)
- Upload an event image (stored on IPFS)
- Send data and confirm the blockchain transaction via your wallet
- Go to "Mint Badge"
- Select the event and enter participant details
- POAP system will generate unique metadata and mint the NFT
- Badges are automatically transferred to participants' wallets
- Use "Verify" page to check badge ownership
- Enter any Ethereum address to verify attendance
- View detailed badge information and metadata
Common Issues
Metamask Connection Issues
- Ensure you're on the correct network
- Reset account in MetaMask (Settings > Advanced > Clear activity tab data)
Transaction Failures
- Check you have sufficient gas funds (ETH)
- Verify contract is deployed on current network
Frontend Build Issues
- Clear node_modules and reinstall dependencies
- Check all environment variables are set
- Verify React and dependency versions
Happy building! Enjoy ! 🎉