npm installCopy env.template to .env.local and fill in your values:
cp env.template .env.localEdit .env.local with your actual thirdweb credentials:
THIRDWEB_SECRET_KEY=your_actual_secret_key_here
NEXT_PUBLIC_THIRDWEB_CLIENT_ID=your_actual_client_id_here
TOKEN_CONTRACT_ADDRESS=0x...your_actual_contract_address
QUEST_CONTRACT_ADDRESS=0x...your_actual_quest_contract_address
CHAIN_ID=84532
ADMIN_ADDRESS=0x...your_actual_admin_wallet
TWITTER_BEARER_TOKEN=your_twitter_bearer_token_for_tweet_verification
GAME_REWARD_BASE=100
GAME_REWARD_MAX=500
GAME_VERIFICATION_WINDOW=86400000npm run devNavigate to http://localhost:3000
The platform uses secure wallet-based authentication:
- Frontend: User connects wallet via thirdweb ConnectButton
- Backend: Server calls thirdweb API with
x-secret-keyheader - Security: Secret key is never exposed to the client
- No Registration: Users connect existing wallets, no account creation needed
/api/claim-daily- Handles daily reward claims/api/complete-quest- Handles quest completion and verification
- Connect Wallet: Click "Connect Wallet" to connect your existing wallet
- View Quests: Browse available quests and their requirements
- Complete Quests: Complete quests to earn rewards (free, tweet, balance requirements)
- Daily Claims: Claim daily rewards when available
- View Balances: See your native ETH and QUEST token balances
- Disconnect: Disconnect wallet when done
If you get Tailwind CSS errors:
npm install tailwindcss autoprefixer- Check your
THIRDWEB_SECRET_KEYin.env.local - Ensure your thirdweb account has API access
- Verify wallet connection is working
- Check that you're on the correct network (Base Sepolia)
- Clear browser cache
- Check console for JavaScript errors
- Ensure all dependencies are installed
chain-reward-system/
├── app/ # Next.js app directory
│ ├── api/ # API routes (quests, daily claims)
│ │ ├── claim-daily/ # Daily reward claiming
│ │ └── complete-quest/ # Quest completion
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Main page
├── components/ # React components
│ ├── QuestManager.tsx # Main quest management component
│ ├── WalletConnect.tsx # Wallet connection component
│ └── ThirdwebProvider.tsx # thirdweb provider wrapper
├── lib/ # Utility libraries
│ ├── auth.ts # Authentication utilities
│ ├── cookies.ts # Cookie management
│ ├── env.ts # Environment configuration
│ ├── quest-api.ts # Quest API functions
│ ├── thirdweb.ts # thirdweb API client
│ ├── types.ts # TypeScript types
│ └── validation.ts # Input validation
└── contracts/ # Smart contract files
- ✅ Wallet-based authentication via thirdweb ConnectButton
- ✅ Quest system with multiple verification types
- ✅ Daily reward claiming with cooldown periods
- ✅ Real-time token balance tracking (native + custom tokens)
- ✅ Tweet verification for social quests
- ✅ Balance requirement verification
- ✅ Server-side API calls with secret key headers
- ✅ Corporate-grade UI design
- ✅ Input validation and security measures
- Push to GitHub
- Connect repository in Vercel
- Set environment variables
- Deploy automatically
- Build:
npm run build - Set environment variables
- Deploy the
outdirectory
- Check the console for error messages
- Verify all environment variables are set
- Ensure thirdweb API access is configured
- Check network tab for API call failures
Your Chain Reward System is now properly configured! 🎉