Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧠 NFT Access Control App – Buy Once, Own Forever

A full-stack dApp that simulates NFT-based access control using blockchain wallet authentication. Users can mint, view, and purchase NFTs tied to digital datasets, with ownership tracked off-chain by wallet address.

Once purchased, NFTs become unavailable to others, mimicking real-world asset exclusivity β€” no accounts, no passwords, just your wallet.

πŸ› οΈ Built for [Hackathon Name] using Node.js, Prisma, React, Next.js, and RainbowKit.


πŸ’‘ Problem Statement

Most digital assets (datasets, media, tools) are protected by centralized logins or static access keys. These systems:

  • Lack verifiable ownership
  • Are prone to credential sharing
  • Don't integrate Web3 identity principles

Our solution:

  • Leverages blockchain wallet addresses as identity
  • Ties ownership to the wallet itself (no login needed)
  • Simulates NFT minting and ownership off-chain

πŸš€ What We Built

A full-stack dApp where:

  • Users connect their wallet (RainbowKit + Wagmi)
  • Upload datasets to mint NFTs (with metadata + CID)
  • NFTs can be bought once per wallet
  • Frontend disables Buy for already-owned NFTs
  • Judges can simulate wallet-based access control end-to-end

⚠️ No blockchain transactions are made β€” this is a secure, fast, simulated environment for Web3 UX testing.


βœ… Core Features

  • 🧾 NFT Minting – Upload a dataset, auto-generate a token
  • πŸ›’ Single-Purchase NFTs – Only one wallet can own each token
  • πŸ‘› Wallet Integration – RainbowKit + Wagmi for seamless wallet connection
  • πŸ” Access Control – Buy button is disabled if user owns the NFT
  • πŸ” Ownership Lookup – List all NFTs tied to a wallet
  • πŸ’½ CID/Metadata Display – FileCID, metadataCID, tokenId, download URL
  • βš™οΈ Modular RESTful API – Built with Express + Prisma
  • 🧱 Styled, Responsive UI – Built with Tailwind CSS

πŸ” Wallet Integration

We use RainbowKit + Wagmi for a seamless developer-friendly wallet connection experience.

  • Users connect with MetaMask or any WalletConnect-compatible wallet.
  • Wallet address is used as a persistent, trustless identity.
  • No signing required β€” read-only logic enables zero-cost demo.
  • All NFT ownership and buy logic is tied to this wallet address in the DB.

πŸ—οΈ Backend Overview

Built with Node.js, Express, and Prisma ORM, the backend exposes endpoints for minting, listing, and purchasing NFTs.

API Endpoints

Method Endpoint Description
POST /api/dataset/mint Mint a new NFT from dataset + metadata
GET /api/dataset/ List all available NFTs
GET /api/dataset/:tokenId Get metadata for a specific token
POST /api/owner/ Record NFT ownership for a wallet
GET /api/owner/:walletAddress Get all NFTs owned by a wallet

πŸ–₯️ Frontend Overview

Built with Next.js and Tailwind CSS, the frontend enables:

  • Wallet connection via RainbowKit
  • Upload interface to mint NFTs
  • Table UI to view all NFTs (owned/unowned)
  • Dynamic β€œBuy” button β€” active only if NFT is available
  • CID shortening and metadata preview

🧱 Tech Stack

Layer Tech Stack
Frontend React, Next.js, Tailwind CSS, RainbowKit, Wagmi
Backend Node.js, Express, Prisma ORM
Database SQLite (dev) / PostgreSQL (prod-ready)
Hosting Vercel / Render (deploy-ready)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages