A decentralized, tamper-proof academic credential issuance and verification platform, leveraging blockchain technology, distributed storage, and cryptographic key management to eliminate fraud, ensure data permanence, and empower students with sovereign control over their qualifications.
Conventional academic credential management suffers from several critical vulnerabilities:
| Issue | Description |
|---|---|
| Centralized Trust | Reliance on a single institution as the sole source of truth creates a bottleneck for verification and a single point of failure. |
| Fraud Susceptibility | Paper-based and even basic digital certificates can be forged or tampered with, undermining trust in legitimate qualifications. |
| Data Impermanence | Institutional databases can be corrupted, lost to disasters, or simply decommissioned, erasing years of academic records. |
| Slow Verification | The process often involves manual requests, emails, and significant wait times, hindering timely employment and enrollment decisions. |
| Lack of Portability | Credentials are tightly bound to the issuing institution's systems, offering students no independent control. |
This platform addresses these challenges through a robust, multi-layered architecture:
-
Blockchain Anchoring: A cryptographic hash of each credential is permanently recorded on an immutable, distributed ledger (Ethereum-compatible). This provides a public, verifiable, and tamper-evident proof of issuance that exists independently of any single entity.
-
Decentralized Storage (IPFS): The full credential document is stored on the InterPlanetary File System, ensuring content-addressable, censorship-resistant availability. The on-chain record links directly to this distributed data.
-
Cryptographic Key Recovery: To prevent catastrophic loss of access, the system implements Shamir's Secret Sharing, distributing encryption key fragments across multiple independent custodians. This allows for key recovery without any single party ever holding the complete key.
- Instant Verification: Any third party can verify a credential's authenticity against the blockchain in seconds.
- Tamper-Proof Records: On-chain hashes make any modification to the original document immediately detectable.
- Disaster Resilience: Distributed storage and key management ensure no single point of failure can destroy records.
- Student-Centric Ownership: Students receive their credential data and can present it for verification without institutional intermediary.
- Full Audit Trail: All issuance and verification events are logged, providing a transparent history.
| Layer | Technology |
|---|---|
| Frontend | React, TypeScript, Vite, Tailwind CSS |
| Backend | Node.js, Express.js, TypeScript |
| Database | PostgreSQL, Prisma ORM |
| Blockchain | Solidity, Hardhat (Sepolia Testnet), Ethers.js |
| Distributed Storage | IPFS (via Filebase S3-compatible API) |
| Cryptography | AES-256-GCM (Content), RSA-OAEP (Keys), Shamir's Secret Sharing (Recovery) |
┌─────────────────────────────────────────────────────────────────────────┐
│ Frontend (React/Vite) │
│ [ University Portal ] [ Student Portal ] [ Verifier ] │
└─────────────────────────────────┬───────────────────────────────────────┘
│ HTTPS (REST API)
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Backend (Node.js / Express) │
│ [ Auth ] [ Issuance Logic ] [ Key Management ] [ Audit Logs ] │
└───────┬────────────────────┬────────────────────────────────┬───────────┘
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────────┐ ┌────────────────────┐
│ PostgreSQL │ │ IPFS Gateway │ │ Blockchain (EVM) │
│ (Prisma) │ │ (Document Store) │ │ (Smart Contract) │
└───────────────┘ └───────────────────┘ └────────────────────┘
- Node.js (v18 or later)
- npm or yarn
- PostgreSQL instance (local or cloud-hosted)
- Access to the Sepolia testnet (via Alchemy, Infura, or another RPC provider).
- A wallet with Sepolia ETH for gas fees (obtainable from public faucets).
-
Clone the repository:
git clone <repository-url> cd miniproject
-
Install all dependencies:
npm run install:all
-
Configure Environment Variables: Create
.envfiles in thebackendandfrontenddirectories.Backend (
backend/.env):# Database DATABASE_URL="postgresql://user:password@localhost:5432/miniproject" # Server PORT=5000 NODE_ENV=development JWT_SECRET="your-secret-key" JWT_EXPIRES_IN="7d" # Filebase (IPFS) FILEBASE_ACCESS_KEY="your-access-key" FILEBASE_SECRET_KEY="your-secret-key" FILEBASE_BUCKET="your-bucket-name" FILEBASE_REGION="us-east-1" FILEBASE_ENDPOINT="https://s3.filebase.com" # Blockchain (Sepolia) SEPOLIA_RPC_URL="https://eth-sepolia.g.alchemy.com/v2/..." PRIVATE_KEY="your-wallet-private-key" CONTRACT_ADDRESS="0x..." # Deployed contract address # CORS CORS_ORIGIN="http://localhost:5173"
Frontend (
frontend/.env):VITE_API_URL="http://localhost:5000" VITE_CONTRACT_ADDRESS="0x..." # Same as backend CONTRACT_ADDRESS VITE_SEPOLIA_RPC_URL="https://eth-sepolia.g.alchemy.com/v2/..."
-
Set up the Database:
cd backend npm run prisma:migrate npm run prisma:generate -
Deploy Smart Contracts (to Sepolia):
cd ../contracts npx hardhat run scripts/deploy.ts --network sepoliaCopy the deployed contract address and add it to
backend/.envasCONTRACT_ADDRESS.
From the project root, a single command starts both the frontend and backend development servers concurrently:
npm run dev- Frontend:
http://localhost:5173(default Vite port) - Backend:
http://localhost:5000(as configured)
miniproject/
├── backend/ # Express.js API server
│ ├── prisma/ # Database schema and migrations
│ └── src/ # Controllers, Routes, Services, Middleware
├── contracts/ # Solidity smart contracts and Hardhat config
│ └── contracts/ # Source files for on-chain logic
├── frontend/ # React single-page application
│ └── src/ # Components, Pages, Hooks, Utils
├── package.json # Monorepo scripts
└── README.md
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome. Please open an issue to discuss proposed changes before submitting a pull request. Ensure all code adheres to the existing style and includes appropriate tests.