Save That Munch

Rescue surplus food from local shops

Save That Munch

About Save That Munch

Save That Munch is a surplus-food marketplace. Local cafés, bakeries and restaurants pack the good food they'd otherwise bin into a surprise “Rizq Bag” and sell it cheap, so it gets eaten instead of wasted.

Objectives

  • Connect vendors with surplus to the customers who want it, in the hours before it spoils.
  • Model a two-sided marketplace where every bag has an inventory of exactly one.
  • Let customers browse what's near them, see what a bag holds, and reserve it in a couple of taps.
  • Take payment and hand off collection with a pickup code the vendor can verify.
  • Ship it through App Store review to real users.

The Challenge

Vendors regularly end the day with quality surplus and no easy way to move it; customers want good food at a fraction of the price. There was no marketplace connecting the two, and surplus food has a shelf life measured in hours, so whatever you build has to sell it today.

The Solution

A data model for a two-sided market underpins the React Native app, shipped through App Store review. Discovery is sorted by distance, each listing shows what a bag holds before you commit, and a reserve-then-charge flow means a bag is never sold twice.

A PostgreSQL model for a two-sided market where every bag has an inventory of exactly one. The React Native app reads listings over a REST API, ordered by distance, and checkout reserves the bag before it charges the card, so two people tapping the same last bag in the same second can't both buy it. Payment settles against a bag that's already held.

SURPLUS, WASTED

Good food going in the bin at closing time

Vendors regularly end the day with quality surplus and no easy way to move it; customers want good food at a fraction of the price. There was no marketplace connecting the two, and surplus food has a shelf life measured in hours. Whatever you build has to sell it *today*. The feed puts what's left nearby in front of the people who'll come and get it.

  • Discovery sorted by distance to the vendor
  • Live counts so a sold-out bag drops off the feed
STM
MOBILE
iphone · DROP-ZONE
PICK A BAG

Know what you're getting before you commit

A “Rizq Bag” is a surprise by design, but the parts that matter aren't. Each listing shows the vendor, the price against what it'd normally cost, how far the pickup is and the exact collection window, enough to decide in a couple of taps before anyone else takes the last one.

$
MOBILE
iphone · DROP-ZONE
RACE FOR THE BAG

Two customers, one last bag

Surplus food has inventory of exactly one: two customers can tap the same bag in the same second. Reserving before charging keeps a bag from being sold twice: the bag is held the moment someone commits, and the card is charged after. The vendor then checks a pickup code inside the collection window to hand it over.

  • Reserve-then-charge, so a bag is never double-sold
  • Pickup code redeemed inside a collection window
The trade

Reserving before charging keeps a bag from being sold twice, but it means a bag can sit held by someone who never finishes paying. So a hold has to expire on its own and put the bag back on the feed, correctness under contention bought with a bit of inventory held in limbo.

STM
MOBILE
iphone · DROP-ZONE

Technologies

React NativeTypeScriptPostgreSQLREST APIsNode.jsApp Store

Conclusion

Save That Munch is live on the App Store, turning food that would have been binned into a bag someone reserves, pays for, and collects with a code. The two-sided model made a marketplace out of surplus that used to just go to waste.

Have a project in mind? Let's talk

NEXT CASE STUDY

UNIT4U

MOBILE APP / PROPTECH

Have a project?Tell me about it.

BIRMINGHAM, UNITED KINGDOM
IR35 IN / OUT
BPSS SCREENED (HMRC)
© 2026 Hamza Wahbi