โ† Jazz Cigarettes

Paper 038: JazzCigarettes Minting Infrastructure - Solana NFT Rails

Date: 2026-04-03

Category: Technical Implementation

Status: Building


Current State

What exists:

What's missing:


Solana NFT Stack Analysis

From existing code (mint-wallet.js):

Standard Solana NFT approaches:

1. Metaplex Candy Machine v3

2. Metaplex Token Metadata

3. Direct SPL Token Mint

Recommendation: Metaplex Token Metadata (standard, marketplace-compatible)


Implementation Plan

Phase 1: Mint Function (Tonight)

Add to mint-wallet.js:


async function mintJazzNFT(wallet, artData) {
  // 1. Generate art metadata
  const metadata = {
    name: `Jazz Cigarettes #${Date.now()}`,
    symbol: "JAZZ",
    description: "Generative jazz notation NFT. Bebop on-chain.",
    image: artData.imageURI,
    attributes: artData.attributes,
    properties: {
      files: [{uri: artData.imageURI, type: "image/png"}],
      category: "image",
      creators: [{
        address: wallet.publicKey.toString(),
        share: 100
      }]
    }
  };

  // 2. Upload metadata to Arweave/IPFS
  const metadataURI = await uploadMetadata(metadata);

  // 3. Create NFT on Solana
  const mintKeypair = Keypair.generate();
  const nft = await createNFT(
    connection,
    wallet,
    mintKeypair.publicKey,
    metadataURI,
    metadata.name,
    metadata.symbol
  );

  return nft;
}

Dependencies needed:


Phase 2: Pricing Model

Options:

Fixed price:

Dutch auction:

Bonding curve:

Recommendation: Fixed $10 USDC (simplicity, volume, prove demand first)


Phase 3: Payment Flow

Customer journey:

1. Visit jazzcigarettes.com

2. Click "Mint" (on mint-live.html)

3. Connect wallet (Phantom/Solflare/Backpack)

4. Preview generative art (gen-mint-art.js renders)

5. Click "Mint for $10 USDC"

6. Approve USDC payment โ†’ treasury wallet

7. NFT minted to customer wallet

8. Confirmation + OpenSea link

Treasury wallet: Same as GetRida (EAq4xofcEtmP85byYoGPZyqY7zV45NvrKif3nqN6JJX7)


Phase 4: Metadata & Hosting

Metadata structure:


{
  "name": "Jazz Cigarettes #12345",
  "symbol": "JAZZ",
  "description": "Generative jazz notation NFT. BebopTruther energy. Prohibition aesthetic. On-chain receipt of swing.",
  "image": "https://arweave.net/...",
  "attributes": [
    {"trait_type": "Key", "value": "Bb"},
    {"trait_type": "Tempo", "value": "180 BPM"},
    {"trait_type": "Style", "value": "Bebop"},
    {"trait_type": "Complexity", "value": "High"},
    {"trait_type": "Generation", "value": "1"}
  ],
  "properties": {
    "files": [{"uri": "https://arweave.net/...", "type": "image/png"}],
    "category": "image",
    "creators": [{"address": "EAq4x...", "share": 100}]
  }
}

Hosting options:

Recommendation: NFT.Storage (free, standard, easy)


Phase 5: Testing Before Live

Test minting flow:

1. Deploy to Solana devnet first

2. Mint 5 test NFTs

3. Verify metadata displays correctly

4. Check OpenSea/MagicEden compatibility

5. Test payment flow end-to-end

6. Deploy to mainnet

Devnet testing: Zero cost, full simulation


Technical Debt from Canonical Restoration

Issue: jazzcigarettes.com has mint infrastructure but no actual minting function.

Files present but incomplete:

Gap: Front-end ready, back-end missing.


Revenue Projection

Conservative scenario:

Moderate scenario:

Aggressive scenario:

Reality check: Comparable Solana NFT projects (generative art, no hype) = 50-500 mints first month. $500-5K revenue realistic.


Next Steps

Tonight:

1. Install @metaplex-foundation/js

2. Write mintJazzNFT function

3. Set up NFT.Storage account (free)

4. Update mint-live.html with mint button

5. Test on devnet

Tomorrow:

1. Deploy to mainnet

2. Mint first test NFT

3. Verify on-chain

4. Update jazzcigarettes.com with live minting

5. Post to X: "Jazz Cigarettes minting live"

Week 1:


Receipt: JazzCigarettes minting infrastructure scoped. Implementation starts now. Target: live minting by tomorrow.

Building.