A modern, out-of-the-box Solana Candy Machine minting dApp for the SolEvent NFT collection.
- 🎨 Modern, responsive UI with gradient backgrounds
- 🔗 Solana wallet integration (Phantom, etc.)
- 🍬 Candy Machine v3 support with Candy Guard
- 🎯 Real-time minting status and NFT display
- 🎉 Mint success popups and animations
- 📱 Mobile-friendly design
- 🔄 NFT redemption and escrow functionality
- 📊 Real-time wallet balance display
- Node.js 18+
- npm or yarn
- Solana wallet (Phantom recommended)
- Solana Candy Machine v3 deployment
- Clone the repository:
git clone https://github.com/your-username/solvent-dapp.git
cd solvent-dapp- Install dependencies:
npm install- Set up environment variables:
Create a
.env.localfile in the project root:
# Solana Network Configuration
NEXT_PUBLIC_SOLANA_NETWORK=devnet
NEXT_PUBLIC_SOLANA_RPC_HOST=https://api.devnet.solana.com
# Candy Machine Configuration
NEXT_PUBLIC_CANDY_MACHINE_ID=your_candy_machine_id_here
NEXT_PUBLIC_COLLECTION_MINT_ADDRESS=your_collection_mint_address_here
NEXT_PUBLIC_TREASURY=your_treasury_address_here
NEXT_PUBLIC_CANDY_GUARD_ADDRESS=your_candy_guard_address_here
NEXT_PUBLIC_ESCROW_PDA=your_escrow_pda_here
# Collection Configuration
NEXT_PUBLIC_COLLECTION_NAME=SolEvent
NEXT_PUBLIC_COLLECTION_DESCRIPTION=A revolutionary NFT collection on Solana.
# Program IDs
NEXT_PUBLIC_METADATA_PROGRAM_ID=metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s
NEXT_PUBLIC_REDEEM_PROGRAM_ID=your_redeem_program_id_here
NEXT_PUBLIC_REDEEM_PDA_SEED=your_redeem_pda_seed_here
# External Services
NEXT_PUBLIC_PINATA_API_KEY=your_pinata_api_key_here
NEXT_PUBLIC_PINATA_SECRET_API_KEY=your_pinata_secret_api_key_here
NEXT_PUBLIC_HELIUS_API_KEY=your_helius_api_key_here- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
- Modern UI: Animated gradient background
- Wallet Connection: Connect your Solana wallet
- Minting Interface: Mint NFTs from your Candy Machine
- NFT Gallery: View your minted NFTs with redemption controls
- Real-time Updates: Live minting status and wallet balance
NEXT_PUBLIC_SOLANA_NETWORK: Solana network (devnet/mainnet-beta)NEXT_PUBLIC_SOLANA_RPC_HOST: RPC endpoint URL
NEXT_PUBLIC_CANDY_MACHINE_ID: Your Candy Machine v3 addressNEXT_PUBLIC_COLLECTION_MINT_ADDRESS: Collection NFT mint addressNEXT_PUBLIC_TREASURY: Treasury wallet addressNEXT_PUBLIC_CANDY_GUARD_ADDRESS: Candy Guard addressNEXT_PUBLIC_ESCROW_PDA: Escrow PDA address
NEXT_PUBLIC_COLLECTION_NAME: Your collection nameNEXT_PUBLIC_COLLECTION_DESCRIPTION: Your collection description
NEXT_PUBLIC_METADATA_PROGRAM_ID: Metaplex Token Metadata ProgramNEXT_PUBLIC_REDEEM_PROGRAM_ID: Your custom redeem programNEXT_PUBLIC_REDEEM_PDA_SEED: Seed for redeem PDA generation
NEXT_PUBLIC_PINATA_API_KEY: Pinata API key for IPFSNEXT_PUBLIC_PINATA_SECRET_API_KEY: Pinata secret keyNEXT_PUBLIC_HELIUS_API_KEY: Helius API key for NFT queries
- Branding: Update collection name and description via environment variables
- Styling: Modify
src/styles.tsfor custom themes - Background: Replace gradient colors in
src/Home.tsx - Components: Customize components in
src/components/
src/
├── components/ # React components
│ ├── CollectionImage.tsx
│ ├── ConnectButton.tsx
│ ├── MintButton.tsx
│ ├── MintSuccessPopup.tsx
│ ├── NFTDetailImageMetadata.tsx
│ ├── NFTDetailNFTMetadata.tsx
│ └── RedeemControls.tsx
├── hooks/ # Custom React hooks
│ ├── useCandyMachineV3.tsx
│ ├── useCollectionNft.tsx
│ ├── useMint.tsx
│ ├── useNftImages.tsx
│ ├── useNftMetadata.tsx
│ ├── useOwnedCollectionNft.tsx
│ ├── usePinataMetadata.tsx
│ ├── useRedeemProgram.tsx
│ ├── useUmi.tsx
│ ├── useWalletBalance.tsx
│ └── utils.ts
├── helpers/ # Utility functions
├── Home.tsx # Main app component
├── main.tsx # App entry point
├── config.ts # Configuration
└── styles.ts # Styled components
scripts/
├── checks/ # Verification scripts
├── delegation/ # NFT delegation scripts
├── escrow/ # Escrow PDA scripts
├── setup/ # Environment setup
├── utilities/ # Utility scripts
└── testing/ # Testing scripts
pages/
├── api/ # API endpoints
│ ├── deposit-hook.js
│ ├── mint-hook.js
│ └── update-metadata.js
├── _app.tsx # App wrapper
└── index.tsx # Entry page
- Frontend: Next.js, React, TypeScript
- Blockchain: Solana Web3.js, Metaplex Umi
- Styling: Styled Components, Emotion
- Wallet: Solana Wallet Adapter
- NFT: Candy Machine v3, MPL Core
- IPFS: Pinata for metadata storage
- APIs: Helius for NFT queries
-
"Candy Machine not found"
- Check your
NEXT_PUBLIC_CANDY_MACHINE_IDis correct - Ensure you're on the right network (devnet/mainnet)
- Check your
-
"Wallet connection failed"
- Make sure you have a Solana wallet installed (Phantom recommended)
- Check your browser console for errors
-
"Minting failed"
- Verify your wallet has enough SOL
- Check Candy Guard configuration
- Ensure all environment variables are set
-
"NFT redemption not working"
- Verify redeem program ID and PDA seed
- Check escrow PDA configuration
- Ensure webhook endpoints are properly configured
- Check the documentation in the
README/folder - Review the analysis documents for detailed information
- Open an issue on GitHub
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details
For support, please open an issue on GitHub or contact the SolEvent team.