A decentralized NFT marketplace built on Solana blockchain where artists can mint, list, and sell their digital artwork as NFTs.
- 🎨 NFT Minting: Artists can create and mint NFTs with metadata stored on IPFS
- 🖼️ Gallery: Browse all available NFTs in a beautiful gallery view
- 💰 Buy/Sell: List NFTs for sale and purchase from other artists
- 👤 Artist Profiles: View artist portfolios and their collections
- 📱 Wallet Integration: Connect with Phantom and Solflare wallets
- ☁️ IPFS Storage: Images and metadata permanently stored via Pinata
- Frontend: React + TypeScript + Vite
- Blockchain: Solana (Anchor Framework)
- Styling: Tailwind CSS + shadcn/ui
- Storage: IPFS via Pinata
- Wallet: Solana Wallet Adapter
- Node.js 18+ and pnpm
- Solana CLI and Anchor Framework (for contract development)
- Pinata account for IPFS uploads
pnpm installCreate a .env file in the root directory:
cp .env.example .envEdit .env and add your Pinata JWT token:
VITE_PINATA_JWT=your_pinata_jwt_token_here
VITE_CHAIN=devnetGetting a Pinata JWT Token:
- Sign up at Pinata.cloud
- Go to API Keys section
- Create a new API key with pinning permissions
- Copy the JWT token to your
.envfile
The Solana program is already deployed on devnet. The program ID and metadata are located in:
contracts/interfaces/metadata.jsonsrc/idl/my_program.json
If you need to redeploy:
cd contracts
anchor build
anchor deploypnpm devThe app will be available at http://localhost:5173
├── contracts/ # Solana smart contract (Anchor)
│ ├── programs/my-program/ # Program source code
│ ├── interfaces/ # Deployment metadata
│ └── target/idl/ # Generated IDL
├── src/
│ ├── components/ # React components
│ ├── contexts/ # Wallet provider context
│ ├── hooks/ # Custom hooks (useProgram, etc.)
│ ├── pages/ # Page components
│ ├── utils/ # Utilities (Pinata, Solana config)
│ └── idl/ # Program IDL for frontend
└── .env # Environment variables
The Solana program supports the following instructions:
- mint_nft: Create a new NFT with metadata
- list: List an NFT for sale at a specified price
- buy: Purchase a listed NFT
- cancel: Cancel an NFT listing
- fetch_artist_nfts: Query all NFTs by an artist
- Connect your Solana wallet (Phantom or Solflare)
- Navigate to "Create NFT"
- Upload your artwork image
- Fill in NFT details (name, symbol, description)
- Click "Mint NFT" and confirm the transaction
- Your NFT will be uploaded to IPFS and minted on Solana
- Browse the gallery on the home page
- Click on any NFT to view details
- Purchase listed NFTs by clicking "Buy Now"
- View your collection in "My NFTs"
| Variable | Description | Required |
|---|---|---|
VITE_PINATA_JWT |
Pinata JWT token for IPFS uploads | Yes |
VITE_CHAIN |
Solana network (devnet/testnet/mainnet) | Yes |
pnpm run type-checkpnpm run buildpnpm run previewMake sure you've created a .env file and added your Pinata JWT token:
VITE_PINATA_JWT=your_actual_jwt_token_here- Ensure you have Phantom or Solflare wallet extension installed
- Make sure your wallet is set to the correct network (devnet/mainnet)
- Try refreshing the page and reconnecting
- Check that you have sufficient SOL for transaction fees
- Verify the program is deployed on the correct network
- Check browser console for detailed error messages
MIT