All work
04

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

The weggo homepage, with category browsing and second-hand listings.

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