Crowdfunding platforms are essential for raising funds, but traditional systems often lack transparency and involve high fees. Our Crowdfunding Using Blockchain project leverages the decentralized, immutable, and transparent nature of blockchain to provide a secure and cost-efficient crowdfunding experience.
Built using Next.js, Tailwind CSS, Solidity, Hardhat, Firebase, and Thirdweb, this dApp allows users to create and fund campaigns on the Ethereum blockchain (Arbitrum testnet) and includes an Admin Panel to moderate campaigns.
This dApp offers a platform where:
- Users can create, fund, and explore campaigns.
- Admins can accept/reject campaigns to maintain legitimacy.
- Rejected campaigns display a reason for rejection publicly.
- 🔐 Wallet-based Authentication: Users connect their wallets via MetaMask.
- 🖼 Campaign Management: Create, view, and fund campaigns.
- 📊 Live Campaign Display: View campaign status in real-time.
- 🧾 Funding History: Display of who donated and how much.
- 🛑 Rejected Campaign View: Users can see reasons behind rejection.
- 🗃 Admin Login via Firebase.
- ✅ Accept Campaigns: Admins can mark campaigns as “Approved” so users can fund them.
- ❌ Reject Campaigns: Admins can reject campaigns with a specific reason, displayed publicly.
- 🧮 Campaign Status: Each campaign shows a status tag (Pending, Approved, Rejected).
Next.js– React framework for optimized renderingTailwind CSS– Utility-first stylingThirdweb SDK– Wallet connection & contract integrationTypeScript– For type safety and better dev experience
Solidity– Smart contract developmentHardhat– Testing and deploying smart contractsThirdweb CLI– Deployment on Arbitrum SepoliaFirebase– Admin authentication & campaign metadata
- Connect Wallet: Users connect their Ethereum wallet via MetaMask.
- Create Campaign: Fill form with title, description, image, target amount, and deadline.
- Await Admin Approval: Campaigns are set to "Pending" status until verified.
- Admin Actions:
- Accept → Campaign goes live and fundable.
- Reject → Campaign displays rejection reason and remains unfundable.
- Fund Campaign: Approved campaigns accept ETH donations from any wallet.
- Withdraw: Campaign owner can withdraw collected funds.
├── smart_contracts/
│ └── CrowdFunding.sol
├── pages/
│ ├── index.tsx
│ ├── create-campaign.tsx
│ └── admin.tsx
├── components/
│ └── CampaignCard.tsx
│ └── Navbar.tsx
├── utils/
│ └── blockchain.ts
│ └── firebase.ts
- Setting up smart contract interactions with thirdweb.
- Understanding the asynchronous nature of blockchain transactions.
- Implementing admin moderation without centralizing the platform too much.
- Building a balance between security, trust, and usability.
- 🔁 Multi-chain Support: Support Polygon, Base, or other L2 chains.
- 🪙 Token-Based Incentives: Reward funders with utility tokens.
- 📈 Campaign Analytics: Dashboard for insights into views, funders, and engagement.
- 📤 Email Notifications: Notify users about campaign updates.
- 💬 Community Comments: Allow discussions under each campaign.
git clone https://github.com/your-username/crowdfunding-blockchain
cd crowdfunding-blockchain
# Install dependencies
npm install
# Add .env file with:
# VITE_CONTRACT_ADDRESS=
# VITE_THIRDWEB_CLIENT_ID=
# FIREBASE_API_KEY=...
# Run the app
npm run devThis project is licensed under the MIT License.




