A decentralized crowdfunding platform built on Ethereum blockchain, enabling creators to raise funds through milestone-based campaigns with transparent governance and reward systems.
- Decentralized Crowdfunding: Create and fund campaigns on the Ethereum blockchain
- Milestone-Based Funding: Funds are released based on completed milestones
- Governance System: Token-based voting for campaign decisions
- Reward Tokens: Contributors earn tokens for participating in campaigns
- Platform Security: Built with OpenZeppelin contracts for enhanced security
- Dark/Light Theme: Modern responsive UI with theme switching
- Real-time Updates: Live campaign statistics and progress tracking
- CrowdfundingFactory: Main factory contract for creating and managing campaigns
- Campaign: Individual campaign contract with milestone functionality
- Governance: Decentralized governance for platform decisions
- RewardToken: ERC-20 token for rewarding contributors
- React 19 with TypeScript
- Vite for fast development and building
- TailwindCSS for styling
- Web3.js for blockchain interaction
- React Router for navigation
- React Hot Toast for notifications
- Solidity ^0.8.19
- Truffle Framework
- OpenZeppelin Contracts
- Ganache (for local development)
- React 19.1.0
- TypeScript 5.8.3
- Vite 7.0.4
- TailwindCSS 4.1.11
- Web3.js 4.16.0
- Lucide React (icons)
- Node.js (v16+ recommended)
- npm or yarn
- Ganache CLI or Ganache GUI
- MetaMask browser extension
git clone https://github.com/vedantlahane/fundforge.git
cd fundforgecd contracts
npm install
# Compile contracts
truffle compile
# Start Ganache (in another terminal)
ganache-cli
# Deploy contracts to local network
truffle migrate --network development
# Run tests
truffle testcd ../frontend
npm install
# Start development server
npm run dev- Connect your MetaMask wallet
- Navigate to "Create Campaign"
- Fill in campaign details (title, description, goal, deadline)
- Set up milestones for fund release
- Deploy your campaign to the blockchain
- Browse active campaigns on the "Explore" page
- View campaign details and milestones
- Contribute ETH to campaigns you support
- Track campaign progress and milestone completion
- Participate in governance voting
- Hold reward tokens to participate in governance
- Vote on platform proposals and changes
- Influence platform fee adjustments and policies
Create .env files in the respective directories:
contracts/.env
MNEMONIC=your_wallet_mnemonic_here
INFURA_PROJECT_ID=your_infura_project_id
The project supports:
- Development: Local Ganache network (port 7545)
- Sepolia: Ethereum testnet for testing
- Mainnet: Production deployment (configure as needed)
fundforge/
βββ contracts/ # Smart contracts
β βββ contracts/
β β βββ Campaign.sol
β β βββ CrowdfundingFactory.sol
β β βββ Governance.sol
β β βββ RewardToken.sol
β βββ migrations/
β βββ test/
β βββ truffle-config.js
βββ frontend/ # React frontend
βββ src/
β βββ components/
β βββ contexts/
β βββ hooks/
β βββ pages/
β βββ utils/
βββ package.json
cd contracts
truffle testcd frontend
npm run lint- Start Ganache
- Deploy contracts:
truffle migrate --network development - Start frontend:
npm run dev
cd contracts
truffle migrate --network sepoliacd frontend
npm run build- Funds are locked in escrow until milestones are completed
- Contributors can vote on milestone completion
- Provides accountability and reduces risk for contributors
- Configurable platform fee (default: 2.5%)
- Fees collected support platform development
- Transparent fee structure
- Contributors earn reward tokens
- Tokens enable voting on platform decisions
- Decentralized governance ensures community control
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Repository: https://github.com/vedantlahane/fundforge
- Issues: https://github.com/vedantlahane/fundforge/issues
This is a demonstration project for educational purposes. Always conduct thorough testing and security audits before deploying to mainnet with real funds.
Built with β€οΈ by Vedant Lahane