UniTrustID is a decentralized identity (DID) management system built on the Algorand blockchain. It enables universities to issue, manage, and verify tamper-proof digital credentials for students anchored on-chain with real transactions that can be verified on the Lora Block Explorer.
Built with AlgoKit, Pera Wallet, Defly Wallet, and the W3C DID specification.
| Feature | Description |
|---|---|
| πͺͺ DID Creation | Generate W3C-compliant did:algo: identifiers anchored on Algorand Testnet via a real 1-ALGO transaction |
| π± Wallet Integration | Connect using Pera Wallet or Defly Wallet via QR code scanning (mobile) |
| π Verifiable Credentials | Issue credentials β StudentID, Library Access, Hostel Resident, Event Attendee, Course Enrollment |
| π Selective Disclosure | Share only specific claims from a credential (e.g., share department without revealing CGPA) |
| π« Campus Services | Simulate credential verification for Library, Hostel, Events, and Exam Hall services |
| π On-Chain Verification | Every DID anchor is a real Algorand transaction viewable on Lora Explorer |
| π Dark / Light Theme | Toggle between dark and light mode with persistent preference |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β UniTrustID Frontend β
β (React + TypeScript + Vite) β
βββββββββββββββ¬ββββββββββββββββ¬ββββββββββββββββββββββββ€
β DID Module β Credentials β Selective Disclosure β
β (W3C DID) β (VC Issue) β (ZK-style reveal) β
βββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββββββββββββ€
β @txnlab/use-wallet-react v4 β
β (Pera Wallet + Defly Wallet SDKs) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β algosdk v3 (Transaction Layer) β
β 1-ALGO self-transfer with DID note β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Algorand Testnet (AlgoNode API) β
β https://testnet-api.algonode.cloud β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
UniTrustID/
βββ frontend/ # React + TypeScript frontend
β βββ index.html # Entry HTML
β βββ package.json # Node dependencies
β βββ tsconfig.json # TypeScript config
β βββ vite.config.ts # Vite + polyfills config
β βββ src/
β βββ main.tsx # Entry point + ErrorBoundary
β βββ App.tsx # Root component (routing, state)
β βββ components/
β β βββ WalletScreen.tsx # Pera / Defly wallet connection
β β βββ OverviewTab.tsx # DID dashboard + Lora link
β β βββ CredentialsTab.tsx # Credential cards + issuance
β β βββ ServicesTab.tsx # Campus service verification
β β βββ ProfileTab.tsx # DID document viewer
β β βββ SelDiscModal.tsx # Selective disclosure modal
β β βββ Console.tsx # Blockchain log viewer
β β βββ CredCard.tsx # Individual credential card
β β βββ WalletChip.tsx # Connected wallet badge
β β βββ Toast.tsx # Toast notifications
β βββ lib/
β β βββ algoNode.ts # Algorand Testnet txn helpers
β β βββ did.ts # W3C DID generation & documents
β β βββ credentials.ts # Credential issuance & disclosure
β β βββ walletProvider.tsx # WalletManager (Pera + Defly)
β β βββ types.ts # Shared TypeScript interfaces
β β βββ utils.ts # Crypto & utility helpers
β βββ styles/
β βββ globals.css # Global styles + theme variables
β βββ header.css # Header + logo + theme toggle
β βββ wallet.css # Wallet connection screen
β βββ credentials.css # Credential cards
β βββ services.css # Services tab
β βββ profile.css # Profile / DID doc viewer
β βββ modal.css # Selective disclosure modal
βββ smart_contracts/ # Algorand smart contracts (AlgoKit)
β βββ __main__.py
β βββ __init__.py
β βββ hello_world/
β βββ contract.py # ARC4 HelloWorld contract
β βββ deploy_config.py # Deployment configuration
βββ pyproject.toml # Python / Poetry config
βββ .algokit.toml # AlgoKit project config
- Node.js β₯ 18
- Python β₯ 3.12
- AlgoKit CLI β₯ 2.x β
pipx install algokit - Pera Wallet or Defly Wallet mobile app (for signing transactions)
- Algorand Testnet account with β₯ 2 ALGO β get free testnet ALGO from the dispenser
git clone https://github.com/<your-username>/UniTrustID.git
cd UniTrustID/projects/CampusIDcd frontend
npm install# Windows (use local Vite binary)
.\node_modules\.bin\vite.cmd --port 5173
# macOS / Linux
./node_modules/.bin/vite --port 5173Open http://localhost:5173 in your browser.
- Click Connect Pera Wallet (or Defly)
- Scan the QR code with your mobile wallet app
- Fill in your campus profile β Name, Student ID, Email, Department
- Click ANCHOR DID ON ALGORAND
- Approve the 1-ALGO transaction in your wallet app
- View the confirmed transaction on Lora Explorer
The project includes an AlgoKit-based smart contract scaffold:
# Activate Python virtual environment
# Windows
.venv/Scripts/Activate.ps1
# macOS / Linux
source .venv/bin/activate
# Build contracts
python -m smart_contracts buildUser fills profile β Generate did:algo:<address>
β Build W3C DID Document
β Create 1-ALGO self-transfer txn with DID note
β Sign via Pera/Defly wallet (mobile approval)
β Broadcast to Algorand Testnet
β Confirm on-chain β View on Lora Explorer
| Credential | Icon | Issuer |
|---|---|---|
| Student ID | π | Campus Registrar Office |
| Library Access | π | University Library |
| Hostel Resident | π | Hostel Administration |
| Event Attendee | πͺ | Student Affairs |
| Course Enrollment | π | Academic Office |
When a campus service requests verification, users choose exactly which claims to reveal:
- β Share: Student ID, Department
- π« Withhold: CGPA, Email, Phone
This follows privacy-by-design principles β only the minimum required information is disclosed.
| Layer | Technology |
|---|---|
| Blockchain | Algorand Testnet (AlgoNode API) |
| SDK | algosdk v3.5.2 |
| Wallet | @txnlab/use-wallet-react v4.6.0, Pera Wallet, Defly Wallet |
| Frontend | React 18.2, TypeScript 5.3, Vite 5.4 |
| Smart Contracts | AlgoKit 2.x, Algorand Python (ARC4) |
| Identity Standard | W3C DID Core v1.0, Verifiable Credentials |
| Explorer | Lora Block Explorer |
- Private keys never leave the wallet β all transactions are signed on the mobile device via Pera/Defly
- No central database β DID anchors live on the Algorand blockchain
- Selective disclosure β users control exactly which credential claims are revealed
- Tamper-proof β credentials are cryptographically signed and can be independently verified
- On-chain auditability β every DID anchor transaction is publicly verifiable on Lora
- W3C DID generation (
did:algo:) - On-chain DID anchoring (1-ALGO transaction)
- Pera Wallet & Defly Wallet integration
- Verifiable Credential issuance (5 types)
- Selective disclosure for campus services
- Lora Explorer transaction links
- Dark / Light theme toggle
- Mobile-native app (React Native)
- DID resolution service (off-chain resolver)
- Credential revocation list
- Multi-university federation
- ARC-19 / ARC-69 NFT-based credentials
Prem Kumar Kuppili
- GitHub: @Premkumar1845
- Email: premkumarkuppili18@gmail.com
This project is built for academic/educational purposes as part of a campus decentralized identity initiative.