-
-
main landing page
-
create escrow
-
fund the escrow
-
escrow created
-
Client reviews work and either pays or disputes.
-
-
-
-
-
-
work submitted to ipfs
-
Client can review the work and either release payment to the freelancer or raise a dispute if it doesn’t meet the requirements.
-
client released fund to freelancer in on click
🌸 Inspiration — For Every Woman Who Delivered and Was Never Paid
I did a project for a crypto personality last year, i spent scripting, recording and editing the video spent weeks creating a video for the promotion of a product, he liked it, he reposted the video too, the videos got thousands of views in a single day, then i asked him for my payment he ghosted me. No payment. No explanation. It was $500 of work, gone.
I couldn’t afford international legal action. I just had to accept it.
But the story wouldn't leave me. So I started asking: is this just me? It isn't. Not even close. More than 50% of freelancers in developing countries are women. Graphic designers in Lagos. Translators in Cairo. Developers in Manila. Video editors in Nairobi. Creative women, skilled women — women pouring their expertise into work that the internet makes borderless, but the legal system leaves unprotected. Together, they lose an estimated $2 billion every year to non-payment and wage theft. Not because they failed to deliver. But because the power was never on their side. Platforms like Upwork exist, yes. But they take 20% commission. For a woman earning $500 a month — which is real, which is common — that's $100 gone before she can pay rent. That's not a solution. That's another form of extraction dressed up as help. Women are still more likely to take the worst jobs in the labour force — insecure, unsafe, and poorly paid — and inclusive economic growth remains far out of reach as long as that's true. UN Women The gig economy promised freedom. What it delivered, for millions of women, was precarity with a prettier name. Then I found the UN's Global Goals — and two of them stopped me cold. SDG 8: Decent Work and Economic Growth — specifically Target 8.5, which calls for full and productive employment and equal pay for work of equal value for all women and men by 2030. And SDG 5: Gender Equality - Target 5.a, which demands equal rights for women to economic resources, financial services, and the protections that let them actually keep what they earn. And SDG 10: Reduced Inequalities — because in developing countries, income inequality has been rising, and women — especially those without safety nets — are consistently more likely to fall below median income. UN Women Three goals. All pointing at the same wound. But goals don't pay bills. Promises don't protect paychecks. Code does. That's why Fair-Gig was born — on International Women's Day, for every woman the system was never built to protect.
Then I found UN SDG 8 — “Decent Work and Economic Growth.” Target 8.5 promises decent work and equal pay for all by 2030. But promises don’t pay bills. Code does.
That’s when Fair-Gig was born.
What it does
Fair-Gig is a blockchain-enforced escrow system that flips the power dynamic. For the first time, a woman freelancer doesn't have to trust a stranger on the internet. The contract trusts for her. Here's how it works:
Client creates an escrow and deposits ETH directly into a smart contract Freelancer sees the funds are locked — on-chain, verifiable, immovable without her Freelancer submits her work with an IPFS content hash as cryptographic proof of delivery Client approves — funds release instantly to her wallet, no middleman, no delay Dispute arises — a neutral arbitrator resolves it fairly, with the evidence on-chain Client goes silent past deadline — refund becomes available, but only then
No 20% platform cut. No "I'll pay you next week." No ghosting. No power imbalance disguised as a business relationship. Just a smart contract that does what the law and the platforms failed to do: enforce the self-evident truth that a woman's work deserves payment.
How I built it
How I Built It Smart Contract — Solidity 0.8.24 + Hardhat The contract is the foundation. Everything else is interface. I used OpenZeppelin's Ownable2Step and ReentrancyGuard because security on a system holding real money — women's money — is non-negotiable. The state machine is strictly linear: Created → Funded → WorkSubmitted → Released (or Refunded). No backward transitions. No exploitable loops. Terminal states cannot be re-entered. I applied CEI (Checks-Effects-Interactions) on every state-changing function. Custom errors instead of require strings cut gas costs substantially. The receive() function deliberately reverts — because direct ETH transfers with no context shouldn't silently lock funds forever. Two full days spent on security architecture alone. That's not over-engineering. That's respect for what this contract is protecting. Frontend — Next.js + Wagmi + RainbowKit RainbowKit handles wallet connectivity across MetaMask, Coinbase, and WalletConnect — seamlessly, on both desktop and mobile. Wagmi hooks (useAccount, useWalletClient) make on-chain state readable without complexity. IPFS integration runs through Pinata. A freelancer uploads her work file, receives a content identifier (CID), and we store a hash of it on-chain. Not the file itself — that would cost prohibitive gas. Just the unforgeable proof that it exists and was submitted at a specific moment in time.
Testing
Started with 5 tests. Ended with 20+. Tested every failure path: wrong amount, wrong caller, wrong state, deadline not reached, extension too long, empty work hash, empty dispute reason. If it can go wrong, I wrote a test for it.
Challenges I ran into
State Machine Logic My first version allowed going from Released back to Funded. That made zero sense. Once money is released, the escrow is done. Rewrote all the modifiers to enforce strict forward-only progression. Terminal states (Released, Refunded) can’t transition anywhere.
Wallet Connect on Mobile
Worked perfectly on desktop with MetaMask extension. Mobile was broken — WalletConnect QR codes wouldn’t appear. Spent six hours debugging. Turned out I needed a valid WalletConnect Project ID (even for demo). Also learned SSR breaks wallet state — switched providers to client-side only.
- Explaining Crypto to Normal Humans My mom asked: “So the money is stored where exactly?” If I couldn’t explain it to her, judges wouldn’t get it either. Simplified everything: “Client deposits money. It locks in the contract. Freelancer sees it’s there. Delivers work. Gets paid.”
4.IPFS Reliability — Pinata's API timed out under load. Added retry logic and replaced generic error messages with specific, actionable ones. Users don't need to know what an API is. They need to know what to do next.
Accomplishments that I'm proud of
Security First
Every ETH-moving function has ReentrancyGuard. CEI pattern on every state change. Ownable2Step prevents accidental ownership transfers. The contract has no backdoors — even the owner can’t steal funds, only resolve disputes fairly.
Zero Platform Fees
Upwork takes 20%. We take 0%. The only cost is gas (~$0.50 on Base Sepolia). For a freelancer earning $500/month, keeping that extra $100 matters.
Focused SDGs
🌍 Grounded in the SDGs That Matter Here:
SDG 8 / Target 8.5 — Decent work and equal pay for all women and men by 2030 SDG 8 (Core) — Sustained, inclusive, and sustainable economic growth SDG 5 / Target 5.a — Equal rights for women to economic resources and financial services SDG 10 — Reduced inequalities within and between countries
This isn’t just a tech project. It’s aligned with UN Sustainable Development Goal 8.5: “Decent work and equal pay for all by 2030.” Specifically targets women freelancers in developing countries who face the highest payment discrimination.
What I learned
Technical:
Solidity is nothing like JavaScript. One mistake and real money disappears. immutable vs constant vs storage variables — gas costs vary wildly. Ownable2Step requires explicit acceptOwnership() — protects against accidental owner changes. Low-level .call{value: amount}("") is safer than transfer() after Istanbul hard fork. ReentrancyGuard isn’t optional — it’s mandatory on every ETH-moving function. Non-Technical:
Security audits aren’t just for million-dollar protocols. i spent a day reviewing every external call. UX beats features. A confused user is a user who leaves. The best hackathon projects solve real problems, not imaginary ones. Simple ships. Complex stalls.
About Freelancers:
Trust is a luxury most gig workers can’t afford. “Just use Upwork” ignores the 20% fee that matters when you’re earning $500/month. Crypto is intimidating. I made it as simple as “connect wallet → click button.”
What's next for Fair-Gig
Immediate(1 week): Transaction history another UI Error message polish + loading state refinement
Short-Term (1–3 Months): Multi-chain deployment on Polygon + Arbitrum for lower gas Fiat on-ramp so clients pay with a credit card — no crypto required Email notifications for every state change
Long-Term: AI-Enabled Dispute Regulation — An intelligent arbitration layer that analyzes submitted work, communication history, and on-chain proof to mediate disputes fairly, transparently, and without human bias. Justice that doesn't sleep, doesn't take bribes, and doesn't favor the client just because they have more money.
Built With
- github
- graph
- hardhat
- javascript
- nextjs
- pinata
- react
- solidity
- vercel

Log in or sign up for Devpost to join the conversation.