A decentralised freelance marketplace powered by Stellar blockchain and Soroban smart contracts.
Stellar MarketPay is an open-source decentralised freelance marketplace where clients post jobs, freelancers apply, and payments are secured in Soroban smart contract escrow β released automatically when work is approved. No middlemen. No payment delays. No platform fees eating your earnings..
- π Wallet Connect β Freighter browser wallet integration
- π Post Jobs β Clients post jobs with XLM budget locked in escrow
- π Apply & Bid β Freelancers apply with proposals
- π Escrow Payments β Funds held in Soroban contract until work approved
- β Release & Complete β Client approves β funds released to freelancer instantly
- π Job History β Track all your jobs and earnings on-chain
stellar-marketpay/
βββ frontend/ # Next.js + React + Tailwind CSS
βββ backend/ # Node.js + Express API
βββ contracts/ # Stellar Soroban smart contracts (Rust)
βββ docs/ # Architecture & API documentation
βββ scripts/ # Deployment & utility scripts
βββ .github/ # CI/CD workflows & issue templates
βββ CONTRIBUTING.md
βββ ROADMAP.md
βββ LICENSE
| Tool | Version |
|---|---|
| Node.js | β₯ 18.x |
| npm | Latest |
| Rust + Cargo | β₯ 1.74 (for contracts) |
| Freighter Wallet | Browser extension |
git clone https://github.com/your-org/stellar-marketpay.git
cd stellar-marketpaychmod +x scripts/setup-dev.sh
./scripts/setup-dev.shcd frontend
npm run dev
# β http://localhost:3000cd backend
npm run dev
# β http://localhost:4000See docs/environment-variables.md for the full list of backend and frontend variables, validation rules, and examples.
Deploy the Soroban escrow contract with docs/contract-deployment.md.
NEXT_PUBLIC_API_URL=http://localhost:4000
NEXT_PUBLIC_STELLAR_NETWORK=testnet
NEXT_PUBLIC_HORIZON_URL=https://horizon-testnet.stellar.org
NEXT_PUBLIC_SOROBAN_RPC_URL=https://soroban-testnet.stellar.org
NEXT_PUBLIC_CONTRACT_ID=CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
NEXT_PUBLIC_USE_CONTRACT_MOCK=falsePORT=4000
DATABASE_URL=postgresql://stellarwork:stellarwork_dev@localhost:5432/stellarwork
JWT_SECRET=replace-with-a-long-random-secret
STELLAR_NETWORK=testnet
HORIZON_URL=https://horizon-testnet.stellar.org
CONTRACT_ID=CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ALLOWED_ORIGINS=http://localhost:3000For frontend development without a deployed Soroban contract:
-
Enable mock mode in
frontend/.env.local:NEXT_PUBLIC_USE_CONTRACT_MOCK=true
-
Start the frontend:
cd frontend npm run dev -
What works offline:
- β Job creation with escrow locking
- β Start work, release escrow, refund escrow
- β Query escrow status and records
- β All contract calls logged to browser console
- β Realistic delays and error simulation
- β No Freighter signing required
- β No network calls to Stellar/Soroban
-
Check the console: All mock contract calls are logged with
[CONTRACT MOCK]prefix for debugging. -
Switch back to real contract: Set
NEXT_PUBLIC_USE_CONTRACT_MOCK=falseand provide a validNEXT_PUBLIC_CONTRACT_ID.
- Install Freighter Wallet
- Switch to Testnet in Freighter settings
- Visit Stellar Friendbot with your public key
- Receive 10,000 test XLM instantly
| Suite | Command | Notes |
|---|---|---|
| Frontend unit snapshots | cd frontend && npm test |
Jest + React Testing Library |
| Update snapshots | cd frontend && npm run test:update-snapshots |
Regenerate when UI changes are intentional |
| Backend unit + coverage | cd backend && npm test |
HTML report in backend/coverage/ |
| E2E (Playwright) | cd frontend && npm run test:e2e |
Includes full client/freelancer marketplace flow |
Deploy or upgrade the Soroban escrow contract using docs/contract-deployment.md.
See CONTRIBUTING.md to get started. All skill levels welcome!
See ROADMAP.md for planned features.
MIT β see LICENSE