Deals
Deals is where I learned how much engineering can sit behind an interaction that should feel almost boring to the customer: open the app, find an offer, use it.
Find the offer.
Forget the system.
A Flutter coupons and cashback product with the admin dashboard and backend needed to operate stores, categories, offers and user-facing content.
The experience has to feel smaller than the system
The product has stores, categories, offers, saved items, discovery, localization and account state. None of that complexity should be the customer’s problem. The mobile flow has to reduce it to a few obvious actions.
Flutter first
The consumer app is Flutter with feature-oriented structure, BLoC/Cubit state, local persistence, Arabic/English support and platform-aware UI. It is the customer-facing surface, not the entire system.
Find the offer.
Forget the system.
The operations stack behind it
A separate dashboard and API handle catalogue and operating workflows. That split lets the consumer app stay simple while the business still gets the controls it needs to keep content moving.
What I care about in mobile work
A mobile product is not finished when the happy path compiles. Loading, empty states, offline behavior, localization, navigation and small focus/touch details are what make repeated use feel deliberate.
Find the offer.
Forget the system.
A note on the repository
The public code spans multiple repositories and historical iterations. I group it here as one product because that is how the engineering responsibility actually fits together.
Back to all work
Work index ↗