A Secure and Scalable Blockchain-Based Academic Credential Verification System
BlockCreds is a decentralized academic credential verification platform that ensures trust, transparency, and security in the issuance and verification of academic certificates.
Built on Polygon Amoy Testnet, BlockCreds leverages:
- IPFS (InterPlanetary File System) for decentralized storage
- Smart Contracts for on-chain validation
- Django Framework for a secure and responsive web application
This solution significantly reduces transaction costs, verification time, and eliminates fraudulent certificates.
- Blockchain: Polygon (Amoy Testnet)
- Storage: IPFS via Pinata API
- Smart Contracts: Solidity
- Backend: Django, Web3.py
- Frontend: Bootstrap, Tailwind CSS
- Database: SQLite (can be extended to PostgreSQL/MySQL)
✅ Decentralized & Tamper-Proof Certificates stored on IPFS
✅ Smart Contract Integration on Polygon for on-chain trust
✅ Bulk Certificate Issuance via CSV upload
✅ Integrated Revocation Mechanism for invalidating certificates
✅ Real-Time Verification via QR Code
✅ Modern & Responsive UI (Bootstrap + Tailwind CSS)
- Admin Issues Certificate(s) through dashboard
- Certificate file is uploaded to IPFS → IPFS returns a unique hash (CID)
- IPFS hash is stored on Polygon blockchain using a smart contract
- QR code & PDF are generated for the certificate
- Verification can be done via QR scanning → Fetches IPFS hash from blockchain
blockcreds/
│
├── blockchain/
│ └── abi/
│ ├── Cert.abi.json
│ └── Cert.sol
│
├── blockcreds/
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
├── core/
│ ├── management/
│ ├── migrations/
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ │
│ ├── static/core/
│ │ ├── css/
│ │ │ ├── forms.css
│ │ │ ├── styles.css
│ │ │ └── verify.css
│ │ ├── images/
│ │ │ ├── admin_login_images/
│ │ │ │ ├── 1.jpg
│ │ │ │ ├── 2.jpg
│ │ │ │ └── 3.jpg
│ │ │ ├── index_bg/
│ │ │ │ ├── 1.jpg
│ │ │ │ └── 2.jpg
│ │ │ ├── logo.png
│ │ │ └── signature.png
│ │ └── js/
│ │ ├── dashboard.js
│ │ ├── qr-scanner.js
│ │ ├── verifier.js
│ │ └── verify_admin.js
│ │
│ ├── templates/core/
│ │ ├── admin_login.html
│ │ ├── base.html
│ │ ├── dashboard.html
│ │ ├── email_template.html
│ │ ├── index.html
│ │ ├── issue_certificate.html
│ │ ├── revoke_certificate.html
│ │ ├── verifier_base.html
│ │ ├── verifier_dashboard.html
│ │ ├── verifier_result.html
│ │ ├── verify_certificate.html
│ │ └── verify_result.html
│ │
│ ├── utils/
│ │ ├── blockchain.py
│ │ ├── certificate_utils.py
│ │ ├── email_sender.py
│ │ ├── hashing.py
│ │ ├── ipfs.py
│ │ ├── pdf_generator.py
│ │ ├── pinata.py
│ │ └── qr_generator.py
│ │
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── models.py
│ ├── sync_events.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
│
├── media/
│ ├── certificates/
│ └── qr/
│
├── scripts/
│ ├── pinata_upload_test.py
│ ├── test_chain_connect.py
│ ├── test_issue.py
│ └── test_verify.py
│
├── .env
├── .gitignore
├── db.sqlite3
├── manage.py
├── README.md
└── requirements.txt
File: blockchain/abi/Cert.sol
Language: Solidity
Features:
✅ Issue Certificates
✅ Verify Certificates
✅ Revoke Certificates
Deployed on: Polygon Amoy Testnet (using POL tokens)
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txtSECRET_KEY=your_django_secret_key
DEBUG=True
PINATA_API_KEY=your_pinata_api_key
PINATA_SECRET_KEY=your_pinata_secret_key
PINATA_JWT=your_pinata_jwt
POLYGON_PRIVATE_KEY=your_wallet_private_key
POLYGON_RPC_URL=https://rpc-amoy.polygon.technology
CONTRACT_ADDRESS=your_deployed_contract_address
# Email Settings (for student notifications)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=your@gmail.com
EMAIL_HOST_PASSWORD=PASSWORD
python manage.py migrate
python manage.py runserverAccess the application at:
👉 http://127.0.0.1:8000/
- Navigate to the Admin Login page.
- Enter your admin email and password.
- Click Login to access the dashboard.
- Get Info about issued, revoked certificates.
- Navigate to the issue certificate page.
- Navigate to the Verify certificate page.
- Navigate to the Revoke certificate page.
- Go to Issue Certificate from the dashboard.
- Fill in Student Details, Course Name, and other fields.
- Click Generate Certificate.
The system will:
- Generate PDF & QR Code
- Upload PDF to IPFS
- Store IPFS Hash on Polygon Smart Contract
- Send Email to student
- Scan the QR Code or visit the Verify Certificate page.
- Enter the Certificate Hash.
- Click Verify to check authenticity.
---
- Navigate to Revoke Certificate page.
- Select the certificate and click Revoke.
- Blockchain updates status to Revoked.
- Language: Solidity
- Deployed On: Polygon Amoy Testnet
- Features: Issue, Verify, and Revoke certificates
- Tools: Remix for deployment
- Nagulapally Bhargavi - https://github.com/bhargavi852004