SkillSnap is a blockchain-powered platform where users can post tasks and get them completed by skilled individuals in their local area. Think of it as a decentralized TaskRabbit with crypto payments, location-based matching, and smart contract automation.
- π Blockchain Integration: Smart contracts on Ethereum for secure, trustless transactions
- πΊοΈ Location-Based Matching: Interactive maps to find tasks near you
- πΌ Skill Categories: Digital services, physical tasks, consulting, and more
- π Wallet Integration: Connect with MetaMask, WalletConnect, and other popular wallets
- π° Crypto Payments: Automatic escrow and payments in ETH
- β Reputation System: Build trust through completed tasks and reviews
- π± Responsive Design: Works seamlessly on desktop and mobile
skillsnap/
βββ smart-contracts/ # Solidity smart contracts
β βββ contracts/
β β βββ SkillSnap.sol # Main contract
β βββ test/ # Contract tests
β βββ scripts/ # Deployment scripts
β βββ hardhat.config.js # Hardhat configuration
βββ frontend/ # React + Vite frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Application pages
β β βββ config.js # App configuration
β β βββ App.jsx # Main App component
β βββ public/ # Static assets
β βββ package.json # Frontend dependencies
βββ README.md # This file
- Node.js (v16 or higher)
- npm or yarn
- MetaMask or another Web3 wallet
git clone <your-repo-url>
cd skillsnapcd smart-contracts
npm installCreate .env file:
PRIVATE_KEY=your_private_key_here
INFURA_API_KEY=your_infura_key_here
ETHERSCAN_API_KEY=your_etherscan_key_hereCompile and test contracts:
npx hardhat compile
npx hardhat testDeploy to testnet:
npx hardhat run scripts/deploy.js --network sepoliacd ../frontend
npm installCreate .env file:
VITE_MAPBOX_API=your_mapbox_token_here
VITE_CONTRACT_ADDRESS=deployed_contract_address
VITE_NETWORK_ID=11155111Start development server:
npm run devPRIVATE_KEY: Your wallet private key for deploymentINFURA_API_KEY: Infura project API keyETHERSCAN_API_KEY: For contract verification
VITE_MAPBOX_API: Mapbox access token for mapsVITE_CONTRACT_ADDRESS: Deployed smart contract addressVITE_NETWORK_ID: Ethereum network ID (11155111 for Sepolia)
- Mapbox: Get a free API key at mapbox.com
- Infura: Create a project at infura.io
- Etherscan: Get API key at etherscan.io
createTask(): Post a new task with escrowacceptTask(): Accept an available taskcompleteTask(): Mark task as completed and release paymentcancelTask(): Cancel a posted taskraiseDispute(): Initiate dispute resolution
- Escrow system for secure payments
- Role-based access control
- Emergency pause functionality
- Anti-reentrancy protection
// Frontend interaction
const tx = await skillSnapContract.createTask(
"Help me move furniture",
"Need help moving couch and boxes",
"Boston, MA",
"Physical",
deadline,
{ value: ethers.utils.parseEther("0.05") }
);const tx = await skillSnapContract.acceptTask(taskId);- Phase 1: Core marketplace functionality β
- Phase 2: Reputation system and reviews
- Phase 3: Multi-token payments (USDC, DAI)
- Phase 4: Mobile app (React Native)
- Phase 5: DAO governance for disputes
- Phase 6: Integration with major gig platforms
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit changes:
git commit -am 'Add some feature' - Push to branch:
git push origin feature/your-feature - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
cd smart-contracts
npx hardhat test
npx hardhat coveragecd frontend
npm test
npm run test:e2egraph TB
A[User] --> B[React Frontend]
B --> C[Ethers.js]
C --> D[SkillSnap Contract]
D --> E[Ethereum Blockchain]
B --> F[Mapbox Maps]
B --> G[Wallet Provider]
- Documentation: docs.skillsnap.dev
- Discord: Join our community
- Twitter: @SkillSnapDeFi
- Email: support@skillsnap.dev
- OpenZeppelin for secure smart contract patterns
- Hardhat for development framework
- React and Vite for frontend framework
- Mapbox for location services
Built with β€οΈ for the decentralized future