Skip to content

Msalways/Stream-Trust-Web3

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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors