Cüte at a glance
A 60-second orientation — what the product does, how money moves, and where to read next
What we're building
A resale marketplace for close communities. Two moves matter:
- Sellers take a photo. The app writes the title, description and a suggested price. Posting takes under a minute.
- Buyers pay with the method their market uses. Cüte holds the money, produces the shipping label, and releases the payout once the buyer confirms.
Why it works: a closed community starts from trust, the whole fulfillment loop runs without manual ops, and nobody has to negotiate delivery in a chat thread.
Cüte runs on several markets from one codebase — EU (the launch market) and BR are live, AR is parked. See Multi-market rails.
One transaction, end to end
| Step | Actor | Order | Payment | Fulfillment | Payout |
|---|---|---|---|---|---|
| List | Seller | — | — | — | — |
| Pay | Buyer | pending_payment → active | pending/analyzing → paid | awaiting_seller | hold |
| Ship | Seller | active | paid | label_generated → posted | hold |
| Deliver | Carrier | active → awaiting_buyer_confirmation | paid | delivered | hold |
| Confirm | Buyer | → completed | paid | delivered | released |
Every arrow is a state machine transition. The full picture: State machines.
Where the money sits
- The payment provider takes the buyer's money — Stripe in the EU, Pagar.me in BR — and the seller's cut lands in their own account with that provider.
- Cüte's ledger tracks it in two buckets:
helduntil the order completes, thenavailable. - The payout moves
availablemoney to the seller's bank when they ask for it.
Cüte never holds the buyer's money itself. See Payout lifecycle.
The stack
- Next.js 16 App Router, Turbopack, Cache Components
- Drizzle ORM (relations v2) on Supabase Postgres
- Tailwind v4, Shadcn, next-intl (en, es, pt, de)
- Restate for durable execution on the money path
- Stripe and Pagar.me for payments; Sendcloud and Melhor Envio for labels
- Socket.io chat on Fly.io; Upstash Redis for rate limits and unread counts
- Vercel for every Next.js app
apps/ holds web, admin, brand, splash, docs and socket. packages/ holds the rest — most importantly @repo/commerce (rules and state machines) and @repo/features (product code).
Read next
- State machines — start here if you are touching business logic.
- System architecture — start here if you are setting up or changing the shape of things.
- Features — start here if you are implementing something specific.
- Roadmap — what is being considered, and what has already landed.
For the company context — mission, brand, why the ü is a smile — see Mission, Manifesto and Brand guidelines.