Overview

HoodNFT turns a single plain-language idea into a complete, coherent NFT collection and deploys it 100% on-chain on Robinhood Chain. You describe a concept, the app designs the whole system (theme, trait categories, rarity, lore), you upload the artwork for each piece, the app validates the metadata against the ERC-721 schema, and lets your wallet deploy it as one self-contained contract: a pre-mint to yourself, or a public drop with a shareable mint page.

Everything is non-custodial and everything lives on-chain. The backend never holds your keys, there is no IPFS pin or storage server to keep alive, and you sign and pay for every on-chain action yourself.

How it works

  1. 01
    DescribeOne prompt. An LLM designs the theme, trait categories, rarity weights, naming convention, and a style bible.
  2. 02
    Preview and refineA small sample (8 to 24 pieces) is assembled from the rarity tables, each with its own name and lore. Re-roll the traits until the mix feels right.
  3. 03
    Upload artworkAdd one image per piece. Drop a whole folder to fill the pieces in order, or upload individually. Images are compressed to WebP in your browser.
  4. 04
    PackageEvery piece’s ERC-721 metadata is built with the art embedded as a data URI and validated against the schema, entirely in your browser. Nothing is uploaded anywhere.
  5. 05
    DeployYour wallet deploys the collection contract, the pieces are written INTO it in batched transactions, then it is sealed: pre-minted to you, or opened as a public drop.
  6. 06
    TradeThe collection is a standard ERC-721 on Robinhood Chain: OpenSea and the chain’s marketplaces index it, and the explorer shows every piece.

Getting started

  1. 01
    Connect a walletMetaMask, Rabby, Robinhood Wallet, or any injected EVM wallet. The app asks your wallet to switch to Robinhood Chain and adds it if needed.
  2. 02
    Hold the token (at launch)Access is gated by holding a minimum amount of $HOOD on Robinhood Chain. Before the token launches on Pons the gate is open.
  3. 03
    Describe your collectionType an idea in plain language, for example "Degen apes in streetwear with caps, gold chains and wild sunglasses", then generate the concept.
  4. 04
    Preview and upload artReview the concept and sample pieces, re-roll traits if you like, then upload your artwork for every piece.
  5. 05
    Package and deployPackage the collection (metadata validation plus on-chain size check), then deploy: your wallet confirms the contract, the batched writes, and the final seal.

Generation

Generation covers the collection system (concept, traits, rarity, names, lore). The artwork itself is always yours: you upload one image per piece.

Step A: concept design

From your idea, an LLM produces a structured concept: a visual identity, 4 to 6 trait categories with values and rarity weights, a lore narrative, a style bible, a naming convention, and a suggested supply. Rarity weights are relative (higher means more common) and are designed to feel intentional: a few common values, fewer rare ones, and a small number of standout legendaries.

Step B: piece assembly

For each piece, traits are drawn from the rarity tables with a deterministic seed, a name is generated from the naming convention, and a short lore line is written that is consistent with the traits and the world.

Step C: your artwork

You upload one image per piece (PNG, JPG, or WebP). Bulk uploads are sorted by filename and matched to the pieces in order, so name your files 001.png, 002.png, and so on. Every image is compressed to WebP in your browser so each piece stays small on-chain. The style bible below is a brief you can hand to your artist.

{
  "collectionName": "Grumble Apes",
  "symbol": "GRMBL",
  "styleBible": {
    "palette": ["#1e1e1e", "#f4c430", "#e24b4a", "#2dd4bf"],
    "renderingStyle": "hand-drawn bold-ink cartoon, thick outlines, flat colors",
    "constraints": ["Thick black ink outlines", "3/4 bust portrait, single character"]
  },
  "traitCategories": [
    { "name": "Background", "values": [
      { "name": "Alley Teal", "weight": 40, "rarity": "Common" },
      { "name": "Neon Grid",  "weight": 6,  "rarity": "Rare" }
    ]}
  ],
  "namingConvention": "Grumble Ape #001",
  "suggestedSupply": 3333
}

Visual coherence

Coherence at scale is the hard part of a collection. Two things keep the system consistent:

  • A style bible. The concept step produces a palette, mood, rendering style, and hard constraints. Use it as the brief for your artwork so every piece shares the same look.
  • Traits before art. Each piece's traits, name, and lore are fixed before you upload, so the image you attach to "Grumble Ape #007" can be drawn to match exactly what its metadata says.

Metadata, 100% on-chain

Every piece is turned into a standard ERC-721 metadata JSON with the art embedded as a data URI, and validated against the schema in your browser BEFORE anything is written. That exact JSON, image included, is stored inside the collection contract as bytecode chunks (the SSTORE2 pattern), and tokenURI() serves it back verbatim as a base64 data URI. There is no IPFS pin to renew, no gateway to trust, and no server to keep alive.

{
  "name": "Grumble Ape #001",
  "description": "Brown fur, cap forward, black shades...",
  "image": "data:image/webp;base64,UklGRl4A...",
  "attributes": [
    { "trait_type": "Background", "value": "Alley Teal" },
    { "trait_type": "Fur",        "value": "Brown" }
  ]
}

Networks

The app targets one Robinhood Chain network at a time, chosen by configuration. This deployment targets Robinhood Chain.

testnetChain 46630. Free test ETH from the faucet (https://faucet.testnet.chain.robinhood.com). Nothing here has real value.
mainnetReal ETH, real collections, irreversible. Every deploy and mint spends actual funds.

A deploy on mainnet requires an explicit confirmation in the UI, and a network guard refuses to run if the configured chain and the RPC endpoint disagree, so you cannot spend real ETH by accident.

Deploying on Robinhood Chain

  1. 01
    Deploy the contractOne transaction deploys your collection’s own ERC-721 contract, with the name and symbol baked in. You are its creator and only authority.
  2. 02
    Write the piecesThe validated metadata blobs (art included) are written into the contract in size-safe batches (about 60KB per transaction). A failed batch can be resumed without redeploying.
  3. 03
    SealOne final transaction locks the collection forever and picks the mode: pre-mint everything to you, or open a public sequential drop.

Writing costs roughly 225 gas per byte. The Package step shows the payload size and the exact number of wallet confirmations before you start.

Drop settings & mint page

A public drop is configured at seal time. The settings are enforced by the contract itself at mint time, not by the app:

Mint priceBuyers pay this amount of ETH per mint. Proceeds accrue in the contract; only the creator can withdraw them. 0 for a free mint.
Start dateMinting opens at this on-chain timestamp. Leave empty to open immediately.
Per-wallet limitMaximum mints per wallet. 0 for unlimited.

Every drop gets its own page at /mint/<contract-address>. It pulls the name, cover, gallery, live minted count, price and status straight from the chain, and the minter signs and pays from their own wallet.

The $HOOD gate

Access uses a token-hold model instead of accounts or card payments: hold at least a set amount of the $HOOD ERC-20 in your wallet to use the app. The balance check is read-only and non-custodial. $HOOD launches on Pons, Robinhood Chain's native launchpad. The gate stays open until the real token address is configured; once set, it enforces automatically. The balance is always read on mainnet, independently of which network the app deploys to.

Configuration

NEXT_PUBLIC_CHAIN_NETWORKmainnet (default, chain ID 4663) or testnet (chain ID 46630).
NEXT_PUBLIC_CHAIN_RPCOptional dedicated RPC URL (Alchemy/QuickNode). Public RPCs are rate-limited.
NEXT_PUBLIC_TOKEN_ADDRESSThe $HOOD ERC-20 address on mainnet. Empty keeps the gate open.
NEXT_PUBLIC_TOKEN_MIN_HOLDMinimum token balance required to enter (default 1000).

Concept and lore generation run server-side through Vercel AI Gateway; no provider keys are needed on Vercel. Artwork is never generated: you upload it, and it is processed entirely in your browser.

Safety and constraints

  • Non-custodial. The backend never holds private keys. You sign and pay every on-chain action.
  • 100% on-chain. Art and metadata live inside the contract. No IPFS, no Arweave, nothing to rot.
  • Mainnet is irreversible. Validate on testnet and preview before any mainnet deploy.
  • Content moderation. Ideas are screened for real trademarks, protected IP, real people, and disallowed content before generation.
  • Valid metadata. Output is validated against the ERC-721 schema before it is written, because a sealed collection can never be edited.
  • Cost control. Art is the expensive step, so a small preview is generated before you commit.