A decentralized freelance marketplace built on Ethereum blockchain that connects freelancers with clients through smart contracts, featuring escrow services, reputation tracking, and decentralized dispute resolution.
- Smart Contract-Based Project Management: Create, accept, and manage freelance projects on the blockchain
- Escrow System: Secure payment handling with automatic fund release upon project completion
- Reputation Tracking: Build and maintain reputation scores for both freelancers and clients
- Decentralized Dispute Resolution: Community voting system for resolving project disputes
- User Profiles: Customizable profiles with bio, avatar, and reputation display
- MetaMask Integration: Seamless wallet connection for Ethereum transactions
- Real-time Updates: Live project status updates and transaction confirmations
- Responsive Design: Modern, mobile-friendly interface
- Gas Optimization: Efficient smart contract design for cost-effective transactions
- FreelanceDAO.sol: Main contract handling project lifecycle, payments, and dispute resolution
- UserProfile.sol: User profile management and reputation tracking
- Escrow.sol: Secure payment escrow system (in development)
- React.js: Modern UI framework with hooks and context
- Ethers.js: Ethereum blockchain interaction
- React Router: Client-side routing
- React Modal: Interactive project details and forms
- Node.js (v16 or higher)
- MetaMask browser extension
- Ethereum testnet (Sepolia/Goerli) or local Hardhat network
-
Clone the repository
git clone https://github.com/yourusername/freelanceDAO.git cd freelanceDAO -
Install backend dependencies
cd backend npm install -
Install frontend dependencies
cd ../frontend npm install -
Deploy smart contracts
cd ../backend npx hardhat compile npx hardhat node # In a new terminal npx hardhat run scripts/deploy.js --network localhost
-
Update contract addresses
- Copy the deployed contract addresses from the deployment output
- Update
frontend/src/contractAddresses.jswith the new addresses
-
Start the frontend
cd ../frontend npm start
The application will be available at http://localhost:3000
- Connect Wallet: Use MetaMask to connect your Ethereum wallet
- Create Profile: Set up your profile with name, bio, and avatar
- Create Projects: List your services with descriptions and pricing
- Manage Projects: Track project status and mark completed work
- Receive Payments: Get paid automatically upon client confirmation
- Connect Wallet: Use MetaMask to connect your Ethereum wallet
- Browse Projects: View available freelance services
- Accept Projects: Purchase projects by sending ETH to escrow
- Confirm Completion: Approve completed work to release payment
- Raise Disputes: Use dispute resolution if issues arise
- Creation: Freelancer creates project with details and price
- Acceptance: Client accepts and pays into escrow
- Development: Freelancer works on the project
- Completion: Freelancer marks project as complete
- Confirmation: Client confirms and payment is released
- Dispute Resolution: Community voting if disputes arise
cd backend
npx hardhat test # Run tests
npx hardhat coverage # Test coverage
npx hardhat node # Local blockchaincd frontend
npm start # Development server
npm test # Run tests
npm run build # Production buildCreate .env files in both backend/ and frontend/ directories:
# Backend
PRIVATE_KEY=your_private_key
INFURA_URL=your_infura_url
# Frontend
REACT_APP_CONTRACT_ADDRESS=deployed_contract_address
REACT_APP_NETWORK_ID=network_id- Escrow Protection: Funds held in smart contract until project completion
- Dispute Resolution: Decentralized voting system for conflict resolution
- Reputation System: Transparent reputation tracking to prevent fraud
- Deadline Enforcement: Automatic project deadlines with penalty mechanisms
- Modern Design: Clean, professional interface with intuitive navigation
- Responsive Layout: Optimized for desktop, tablet, and mobile devices
- Real-time Updates: Live transaction status and project updates
- Interactive Elements: Smooth animations and user feedback
- Accessibility: WCAG compliant design for inclusive user experience
createProject(name, description, amount): Create new freelance projectacceptTerms(projectId): Accept and pay for projectmarkAsCompleted(projectId): Mark project as finishedconfirmCompletion(projectId): Confirm completion and release payment
raiseDispute(projectId): Initiate dispute resolutionvoteOnDispute(projectId, voteForFreelancer): Vote on dispute outcomeresolveDispute(projectId, voteForFreelancer): Execute dispute resolution
createOrUpdateProfile(name, bio, avatar): Update user profilegetProfile(user): Retrieve user profile information
- 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.
- Documentation: Check the inline code comments and component documentation
- Issues: Report bugs and feature requests via GitHub Issues
- Discussions: Join community discussions in GitHub Discussions
- Advanced reputation algorithms
- Multi-token support (ERC-20 tokens)
- Automated milestone payments
- Integration with IPFS for file storage
- Mobile app development
- Advanced dispute resolution with DAO governance
- Cross-chain compatibility
- Ethereum Foundation for blockchain infrastructure
- OpenZeppelin for secure smart contract libraries
- MetaMask team for wallet integration
- React community for frontend framework
Built with โค๏ธ for the decentralized future of work