This project is a decentralized application (DApp) built with Flask, Solidity, and IPFS, allowing institutions to issue and verify academic certificates using the blockchain.
- Admin login with MetaMask
- Upload certificate to IPFS
- Store metadata on blockchain
- Student login with wallet
- Verify, view, download, and share certificates
- Solidity (Smart Contract)
- Flask (Backend)
- HTML/CSS/JS
- IPFS (Certificate storage)
- Web3.js & MetaMask
.
├── app.py # Flask backend
├── contracts/ # Solidity smart contracts
│ └── CertificateVerification.sol
├── frontend/ # Frontend templates and static files
│ ├── templates/
│ │ ├── admin_dashboard.html
│ │ ├── student_dashboard.html
│ └── static/
│ └── css, js, images...
├── images/ # Screenshots used in README
├── .env # Environment variables (ignored in .gitignore)
├── README.md # Project documentation
└── requirements.txt # Python dependencies
git clone https://github.com/Spandana-MJ/blockchain-certificate-verification.git
cd blockchain-certificate-verificationpip install -r requirements.txt- Compile
CertificateVerification.sol - Deploy to a local or test Ethereum network (e.g. Ganache or Polygon Mumbai)
- Copy the deployed contract address and ABI
CONTRACT_ADDRESS=your_deployed_contract_address
WEB3_PROVIDER=https://your_rpc_provider
PINATA_API_KEY=your_pinata_key
PINATA_SECRET_API_KEY=your_pinata_secretMake sure
.envis listed in.gitignore
python app.pyAccess it at: http://127.0.0.1:5000
- Admin logs in via MetaMask
- Uploads a certificate → stored on IPFS
- Smart contract stores metadata
- Student logs in via wallet → can view, verify, and download the certificate
- Email notifications to students
- Multi-user role support
- Add QR code for certificate verification
- Deploy on Ethereum mainnet or Polygon




