DEV Community

Daniel Ioni
Daniel Ioni

Posted on

How I Integrated NFTs into MyZubster with Thirdweb SDK

How I Integrated NFTs into MyZubster with Thirdweb SDK

The Vision

MyZubster is a self-hosted Monero payment gateway and skills marketplace. I wanted to add a new layer of value: NFTs as proof of skill verification.

When a user completes a service on MyZubster, they receive an NFT that certifies their skill. This creates a verifiable, on-chain record of their expertise.

Why NFTs?

  • Verifiable – Anyone can check the authenticity of the NFT
  • Portable – The user owns the NFT, not the platform
  • Immutable – Cannot be altered or removed
  • Collectible – Users can build a portfolio of verified skills

The Architecture

┌─────────────────────────────────────────────────────────────────┐
│ NFT INTEGRATION │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │ Monero │ │ Gateway │ │ Marketplace │ │
│ │ Payment │──▶│ (Order │──▶│ (Skill → NFT │ │
│ │ (XMR) │ │ creates │ │ minting) │ │
│ └─────────────┘ └─────────────┘ └──────────┬──────────────┘ │
│ │ │
│ ┌────────────┴────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────┐ ┌─────────────────┐ │
│ │ Blockchain │ │ Wallet │ │
│ │ (Polygon) │ │ (Admin) │ │
│ └─────────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
text


Tech Stack

Component Technology
Blockchain Polygon (Ethereum L2)
NFT SDK Thirdweb SDK
Smart Contract ERC-1155 (multi-token standard)
Backend Node.js + Express
Frontend React Native (Android)
Payment Monero (XMR)

How It Works

1. Skill Completion

When a user completes a service on MyZubster, the system triggers the NFT minting process.

2. NFT Minting

The backend calls Thirdweb SDK to mint an NFT:


javascript
// services/nftService.js
const mintSkillNFT = async (userId, skillName, metadata) => {
  const sdk = getSDK();
  const contract = await sdk.getContract(CONTRACT_ADDRESS);

  const nftMetadata = {
    name: `MyZubster Skill: ${skillName}`,
    description: `Certificato di competenza verificata su MyZubster`,
    attributes: [
      { trait_type: 'User ID', value: userId },
      { trait_type: 'Skill', value: skillName },
      { trait_type: 'Platform', value: 'MyZubster' }
    ]
  };

  const { id } = await contract.erc1155.mint({
    metadata: nftMetadata,
    to: metadata.walletAddress,
    supply: 1
  });

  return { success: true, tokenId: id };
};

3. NFT Collection

Users can view their NFT collection in the mobile app:
javascript

// app/screens/NFTCollectionScreen.js
const loadNFTs = async () => {
  const walletAddress = user?.walletAddress;
  const nfts = await getUserNFTs(walletAddress);
  setNfts(nfts);
};

4. NFT Verification

Anyone can verify the authenticity of an NFT:
javascript

// Verify NFT ownership
const hasNFT = await verifyNFTOwnership(walletAddress, tokenId);
// Returns true or false

The NFT Contract

I used Thirdweb to deploy an ERC-1155 contract on Polygon.

Why ERC-1155?

    ✅ Supports multiple token types (semi-fungible)

    ✅ Efficient batch transfers

    ✅ Can represent different skill levels

Key features of the contract:

    Minting controlled by the marketplace owner

    Metadata stored on IPFS via Thirdweb

    Each skill has a unique token ID

API Endpoints
Method  Endpoint    Description
POST    /api/nft/mint   Mint an NFT for a completed skill
POST    /api/nft/verify Verify NFT ownership
GET /api/nft/user/:wallet   Get all NFTs owned by a user
Mobile App Screens

The mobile app now includes an NFT Collection screen:

    🎨 Displays all NFTs owned by the user

    📝 Shows skill name, description, and token ID

    🔘 One-click minting for completed skills

Why Polygon?

Polygon is the perfect network for this integration:

    Low fees – Almost zero transaction costs

    Fast – Near-instant finality

    Ecosystem – Fully compatible with Ethereum tools

    Environmental – Low carbon footprint

The Business Model

NFTs create new revenue opportunities:

    Minting fees – Charge a small fee for minting NFTs

    Verified seller badges – Premium NFTs for verified sellers

    Marketplace trading – Users can trade skill NFTs

    Skill portfolios – Users build verified skill portfolios

What's Next?

    🔜 NFT Marketplace – Buy and sell skill NFTs

    🔜 Achievement NFTs – Gamify the platform with achievement badges

    🔜 Event NFTs – NFT tickets for platform events

    🔜 Tari Integration – Native Monero NFTs when Tari launches

Code Repository

All code is open source on GitHub:

    MyZubster – Main repository

    MyZubsterGateway – Core Monero payment gateway

    MyZubster-Marketplace – Marketplace with NFT integration

    MyZubster-App – Android app with NFT Collection

Final Thoughts

Integrating NFTs into MyZubster was a natural evolution. It adds value for users, creates new revenue streams, and makes the platform more engaging.

The combination of Monero payments + NFT skill verification creates a unique value proposition:

    💰 Monero – Private, borderless payments

    🎨 NFTs – Verifiable, portable skill proof

    🔐 PGP – Cryptographic order verification

    🧅 Tor – Anonymous marketplace access

The future is decentralized, private, and verifiable.

Built with ❤️ for the Monero and Web3 communities.
Enter fullscreen mode Exit fullscreen mode

Top comments (0)