The Story Behind NFT-Gated University Access

🔍 Inspiration

As a student juggling 3 physical ID cards (dorm, library, gym), I wondered: "Why can’t universities consolidate access like Web3 wallets consolidate identities?" After seeing BitBadges’ gated NFT tools at this hackathon, the vision clicked:

"A single NFT that adapts to your academic journey—from freshman year to alumni status."

The rise of token-gated communities (like Friends With Benefits) and IoT smart locks proved the tech was ready. We just needed to bridge it to education.

📚 What I Learned

  1. Multi-Chain Auth: BitBadges’ SDK taught me cross-chain credentialing (e.g., a Polygon NFT triggering an Ethereum smart contract).
  2. Zero-Knowledge Proofs: To preserve privacy, we implemented partial verification:
    $$
    \text{Verify}(ID_{\text{NFT}}, \text{University}{\text{DB}}) \rightarrow \text{Access}{\text{Yes/No}} \ \text{without exposing } \text{DOB}_{\text{student}}
    $$
  3. University Bureaucracy: Pilot talks revealed IT departments prioritize backward compatibility—so we added RFID emulation for legacy scanners.

⚙️ How We Built It

Tech Stack

  • Frontend: React + WalletConnect (for wallet login)
  • Backend: Node.js + BitBadges API (NFT minting/verification)
  • Hardware: Raspberry Pi + NFC readers (prototype scanners)
  • Smart Contracts: Solidity (access control logic)

Key Steps

  1. NFT Minting:
    • Used BitBadges to issue role-based NFTs (e.g., Student_EMU_2025, Alumni_VT_2010).
  2. Gate Integration:
    • Wrote a smart contract to check NFT ownership + expiry dates:
      solidity function hasAccess(address _user) public view returns (bool) { return balanceOf(_user) > 0 && block.timestamp < expiryDate[_user]; }
  3. Scanner Prototype:
    • Modified open-source NFC readers to decode wallet addresses (cost: \$17/unit vs. \$200 commercial alternatives).

🧗 Challenges Faced

  1. Wallet Adoption: Non-crypto users struggled with MetaMask.
    • Fix: Added email/SMS fallback via UniPass.
  2. Gas Fees: Students shouldn’t pay to enter a library!
    • Fix: Used Polygon’s testnet for demo + proposed uni-subsidized gas.
  3. Real-World Testing:
    • First scanner failed in high-traffic areas (≈5 sec latency).
    • Fix: Switched to pre-computed keccak256 signatures for faster verification:
      $$
      \text{Signature}{\text{valid}} = H(\text{Wallet}{\text{ID}} \parallel \text{Room}_{\text{code}})
      $$

🌟 What’s Next?

  • Pilot with EMU’s CS department this fall.
  • Add SBTs (Soulbound Tokens) for non-transferable credentials.
  • Explore zkRollups for batch verification in crowded lecture halls.

Key Takeaways:

  • Web3 can solve real-world inefficiencies if we prioritize UX.
  • Collaboration with institutions is harder than coding 😅.

Built With

  • accessible-components.-the-backend
  • addresses.
  • and-used-ethers.js-and-wagmi-for-seamless-web3-interactions.-we-chose-chakra-ui-for-its-modular
  • cloud
  • connected-to-firebase-firestore-for-storing-user-profiles-and-access-logs.-to-bridge-web2-and-web3-auth
  • custom
  • decode
  • firmware
  • in
  • like
  • powered-by-vite-for-fast-development
  • python
  • running-on-node.js-and-express
  • services
  • the-frontend-was-built-with-react.js-and-typescript
  • to
  • vercel
  • wallet
  • we-implemented-nextauth.js-and-clerk.dev-for-oauth-integration-with-university-systems.-for-iot-integration
  • we-prototyped-nfc-scanners-using-raspberry-pi-4-and-pn532-readers
  • writing
Share this project:

Updates