Skip to content

Case study

Hasadna: Sudanese Crops Marketplace

Hasadna is a Sudanese crops marketplace: a website, an admin dashboard, and iOS and Android apps where a farmer lists a crop with sample photos and a per-unit price, and a trader buys outright or bids in a live auction. I built it for farmers far from the Gedaref and El Obeid markets, and for traders who want to see today's price before they commit.

Client
Crops Marketplace, Sudan
Year
2026
technologies
2
The result
757 server tests, 230 app tests
Hasadna: Sudanese Crops Marketplace
Hasadna: Sudanese Crops Marketplace
Hasadna: Sudanese Crops Marketplace
Hasadna: Sudanese Crops Marketplace
Hasadna: Sudanese Crops Marketplace
Hasadna: Sudanese Crops Marketplace
Hasadna: Sudanese Crops Marketplace
Hasadna: Sudanese Crops Marketplace

1 / 8

At a glance

The work, step by step

  1. 01

    The problem

    A farmer in Sudan knows his crop but not its price. Prices move from one market to the next and from one day to the next, and the person actually tracking them is the middleman standing between the farmer and the trader. If the farm sits far from the Gedaref and El Obeid markets, the farmer sells at a price he hears for the first time on the day of the sale, with no time left to compare and no price record to check against.

    On the other side, the trader is buying a crop he has never seen: no sample photos, no details on quality, packing or delivery, no clear unit of sale between the sack and the quintal, and no reference price to build an offer on. Off-the-shelf tools do not close that gap. They do not carry the vocabulary of the Sudanese market, they have no live auction, and they do not put today's price in front of everyone.

  2. 02

    What was built

    I built the whole marketplace: crop listings with guided sample photos (crop in hand, sack open, full pile), plus quality, packing and delivery details, a price per sack or quintal, and the full value of the quantity. Next to it sits a price board showing the lowest price per crop and unit across published listings, a live price ticker, thirty days of recorded prices, and alerts when a target price is reached. A trader can buy outright or bid in an auction priced per unit with a live per-second counter, a reserve price that protects the farmer, an optional refundable deposit, and admin-run sessions; deals are negotiated through direct messages and price offers, closed with a rating afterwards, and supported by sample requests and a wanted section for traders' buying requests.

    The decision that shaped the rest was to open the app straight into the market with no account. Registration is asked for only at the first action (listing, bid, or message), and the user is returned to where they left off; a phone number is enough and email is optional. Today's price is what earns trust, and putting the price board behind a signup wall kills the first visit. The second decision was payments: the Bravo wallet with a verification code, or a transfer through Bankak, Fawri or OCash reviewed manually by an admin, with fees and promotion controlled entirely by the owner from the dashboard and a switch to stop payments altogether, because one bank transfer being held up should not stop every sale. The site and dashboard run on Laravel 13, Livewire 3 and Tailwind CSS 4; the app is Flutter with BLoC and secure session storage; the API is Sanctum and live updates go through Pusher, with per-resource permissions, rate limits, a CSP policy and duplicate-payment protection. The OWASP security audit covered the site, the API and the app, and 79 of its 80 findings were fixed; tests reached 757 on the server and 230 in the app, all passing.

  3. 03

    The result

    757 server tests, 230 app tests

    The hard numbers I have are engineering ones: an OWASP audit with 79 of 80 findings fixed, and 757 server tests plus 230 app tests, all passing. For the market itself, four measures matter to me: the gap between the price a farmer sold at on the platform and the market price that same day, the share of listings that close in a deal without a middleman, how many auction sessions close above the reserve price, and the time between a farmer registering and publishing a first listing. Those get read after a full harvest season.

More work

Confirm this action