How shadowincache/escrowlance works
EscrowLancer coordinates freelance projects from creation and funding through freelancer assignment, milestone proof submission, approval, and payout, with disputes and refunds as an alternate resolution path. The React app presents these workflows and connects wallets; the Express API validates requests, persists off-chain records, and invokes escrow actions. MongoDB stores users, projects, milestones, transactions, and disputes, while IPFS holds proof content and the Sepolia contract guards funds and state. Routes and controllers are sampled; other README-listed capabilities are represented at their exact enclosing paths where implementation details were not provided.
Main entry points: App.jsx React routes · app.js Express API · milestoneController.js Milestone workflow · api.js API client
Components 23
User experience
- React routes
frontend/src/App.jsx - Login and signup
frontend/src/pages/auth - Project workspace
frontend/src/pages/projects - Milestone submission
frontend/src/pages/milestones/SubmitMilestone.jsx - Wallet, disputes, profile
frontend/src/pages - Wallet connection
frontend/src/hooks/useWallet.js - API client
frontend/src/services/api.js
API workflows
- Express API
backend/src/app.js - Project workflow
backend/src/controllers/projectController.js - Milestone workflow
backend/src/controllers/milestoneController.js - Dispute workflow
backend/src/controllers/disputeController.js - Auth and user routes
backend/src/routes - Proof uploads
backend/src
Off-chain records
- Mongo records
backend/src/models - Transaction history
backend/src/models/Transaction.js - MongoDB
Escrow and integrations
- Chain operations
backend/src/services/blockchainService.js - Contract client
backend/src/blockchain/contractClient.js - Freelance escrow
blockchain - Pinata / IPFS
backend/src/ipfs/pinataClient.js
Other components
- Client / freelancer
- MetaMask
- Sepolia network
Connections 33
- Client / freelancer → React routes: uses
- React routes → Login and signup: routes to
- React routes → Project workspace: routes to
- React routes → Milestone submission: routes to
- React routes → Wallet, disputes, profile: routes to
- Login and signup → API client: requests
- Project workspace → API client: requests
- Milestone submission → API client: requests
- Wallet, disputes, profile → API client: requests
- Wallet, disputes, profile → Wallet connection: connects wallet
- Wallet connection → MetaMask: reads account
- API client → Express API: HTTP requests
- Express API → Project workflow: dispatches
- Express API → Milestone workflow: dispatches
- Express API → Dispute workflow: dispatches
- Express API → Auth and user routes: dispatches
- Project workflow → Mongo records: reads/writes
- Milestone workflow → Mongo records: reads/writes
- Dispute workflow → Mongo records: reads/writes
- Project workflow → Chain operations: calls escrow actions
- Milestone workflow → Chain operations: calls approval/release
- Dispute workflow → Chain operations: calls dispute actions
- Chain operations → Contract client: gets contract
- Contract client → Freelance escrow: invokes contract
- Freelance escrow → Sepolia network: executes on
- Milestone submission → Freelance escrow: submits proof transaction
- Project workflow → Transaction history: records refund
- Milestone workflow → Transaction history: records payment activity
- Dispute workflow → Transaction history: records dispute activity
- Mongo records → MongoDB: persists
- Proof uploads → Pinata / IPFS: pins content
- Milestone workflow → Contract client: verifies submission receipt
- Milestone submission → Proof uploads: uploads proof