weggo
A used item is easy to put on a page. Helping two people find each other, ask the right questions and deal with what happens next is the larger product. That is the part we built around.
Industry
Second-hand commerce · Egypt
Scope
Product design, bilingual marketplace, seller and staff workflows, production infrastructure
Stack
React / TypeScript, hammer, C++20 / anvil, MongoDB, Valkey
Live at
weggo.org — browse by category, find a listing, and start a conversation.
Where it started
An existing marketplace needed a connected product
weggo already existed as a place to list second-hand items. The rebuild was not a landing page for a new idea: it had to carry an existing marketplace forward, including its listings and accounts, while giving the experience a clearer structure.
The important unit was not the listing card on its own. It was the sequence around it: browse, open, compare, ask, reply, and manage the outcome. We treated the public marketplace, the seller tools and the staff workflows as parts of the same system, in English and Arabic.
The structure
Four parts that have to work together
Browse before you commit
Let people explore categories, search and listing details before asking them to participate. Keep favorites and filters close to that flow, rather than making the homepage carry every possible action.
Make the seller part of the context
A price alone does not answer the questions that come with buying used. Profiles, reviews and seller verification workflows provide context, while the listing gives each conversation a clear starting point.
Build the way back into the product
A reply is only useful if the other person notices it. Chat and notifications work together, and support is more than an email link: members can open a ticket, attach evidence and follow the response.
Give operations their own tools
Reports, seller review, account restrictions, appeals and support need a staff workspace. Permission checks decide which tools a staff member can use; those workflows do not belong in the public browsing interface.
The call we argued about
A marketplace is not a checkout
An online shop can put the next step in a basket. A second-hand marketplace has a different uncertainty: the buyer may need another photo, a detail about condition, or an answer from the person selling. Treating every listing like a retail product would hide that conversation rather than solve it.
We put the effort into discovery, listing context, messaging and the tools that support an exchange. That also sets an honest boundary: a seller profile or verification step can add information, but it is not a promise that every deal is safe. Reporting and support remain necessary.
Build choices
One product, with boundaries that hold
What it needed
A React and TypeScript client on hammer, a C++20 server on anvil, MongoDB for application data and Valkey for shared runtime services. Image processing, messaging, durable jobs and staff permissions had to serve real marketplace workflows, with a migration path for existing data.
What we left out
A separate product for each language, a public interface full of staff controls, and a checkout added just to make the site look like a conventional store. The work went into the exchange people actually need to make.
Outcome
Live at weggo.org. The rebuild brings browsing, listing management, seller conversations and operational support into one bilingual marketplace. Existing data was carried forward into the new application.
Next case study
Yard Club