
Marketplace web appSolo, built with Claude CodeDrawing 40 of 43
Reach
Earn
I built ReachEarn, a web app where brands pay creators for the views and sales their posts bring in. It runs end to end on seeded demo data, and signups have been paused since my last commit on July 2, 2026.
- StatusComplete, 2026
- StackNext.js 15, React 19, TypeScript, Tailwind, Prisma 6, SQLite, Recharts
- Size39 pages, 15 data models, about 18,400 lines of TypeScript
- History6 commits, June 29 to July 2, 2026
- Earlier namePostPaid
Sheet 02 of 08/What it is
What ReachEarn is
ReachEarn is a marketplace for UGC, the short videos creators post on TikTok, Instagram Reels or YouTube Shorts for a brand. A brand posts a campaign and picks how it pays. It can pay per thousand views, take a cut of sales, pay a flat fee per post, or mix them. Creators apply, post on their own accounts, and get paid as the post performs.
It started out as PostPaid. The first commit on June 29 uses that name, and I renamed it ReachEarn the same evening.


Sheet 03 of 08/Brand
The brand side
A brand funds a campaign before it opens, and that money sits in escrow. Then it goes through applicants, approves the posts it likes, and watches the views come in.
Every brand and creator in these screenshots is a seeded demo account. Lumio is the demo brand and Maya is the demo creator, and the faces are placeholder photos the app pulls from a free avatar service.
The campaign builder shows a payout preview while you choose the pay model. That preview runs the same payout math the settlement code runs.





Sheet 04 of 08/Creator
The creator side
Creators browse the open campaigns and see what they could earn before they apply. Once a post is approved and live, its views and earnings show up on their dashboard.
On a phone the sidebar moves into a drawer. The top bar doesn't fit at that width, though. The Advance time button wraps onto two lines and pushes the last few icons off the screen.






Sheet 05 of 08/Money
Where the money goes
This was the part that had to be right. Every amount is stored in whole cents and every percentage in basis points, so no floating point math ever touches money.
Each payout only pays what's new since the last settlement, and it can't go past what's left in the budget. Every payout also carries a unique key, so running a settlement twice pays nothing extra. The ledger only ever gets new lines added, and it's the source of truth. Wallet balances are a cached copy of it.
None of this money is real. Nothing gets paid out anywhere, and every figure in these screenshots comes from the seed script.



Sheet 06 of 08/Simulation
Making the numbers move
There's no TikTok or Instagram API behind it, and no background timer. Views and revenue only change when someone presses Advance time. Each tick is one simulated day. It grows the views on every live post, writes a snapshot, and settles what's owed.
The seed script backdates up to 20 days of view history and pays it out through the same settlement code, so the demo money adds up across the brand, creator and admin views.


Sheet 07 of 08/Process
How I built it
I built it with Claude Code. The repo still has the two files that steered it. CLAUDE.md is the file Claude Code reads at the start of a session, and it sends every session to CONTRACT.md first.
The contract opens by telling the reader they're building one slice of the app on a frozen foundation. It lists what a slice isn't allowed to touch, which is the auth, the database, the money math and the UI building blocks. Then it lays out the design tokens and the route map every slice has to fill in.
The git history is short. The first commit on June 29 already holds the whole app in 121 files. Three small fixes to the receipt styling came that night. The last commit, on July 2, touched 111 files. It added 18 loading screens and a light and dark switch, and it paused signups.
Sheet 08 of 08/Status
Where it stands
With signups paused, the signup pages send you back to the login page. That page says signups are paused and lists the brand and creator demo accounts. The admin account still works if you type it in. The Continue with Google button is a stand-in too. It signs you into the demo creator account without going through Google.
The code leaves room for a real metrics API and a real payment provider like Stripe Connect behind the parts that fake them now. Neither one is built.
