ElMwafer
Save on every order, one tap at a time
An Arabic coupon and deals app on Flutter and Firebase: copy a discount code in one tap, open the store, browse offers, and get new deals by push.
- Country
Saudi Arabia
- Type
- Source code
- Timeline
- 2021
- Platforms
- Android · iOS
Overview
ElMwafer, known in Arabic as وفر قريشاتك or save your money, is a coupon and deals app for Arabic-speaking shoppers in Saudi Arabia and the Gulf. It lists discount codes for well-known online stores across fashion, home, travel, restaurants, kids and more.
Users copy a code in one tap and jump to the store, browse store-wide offers and read shopping articles. Content is managed from a separate Firebase admin app, and this repository includes the full source of the user app.
The challenge
- 01
Coupon codes were scattered across social media posts, and many had expired by the time shoppers found them.
- 02
The operator needed to add stores, coupons and offers without shipping an update, and announce new deals right away.
- 03
The audience reads Arabic, so the whole experience had to be RTL first with an Arabic typeface.
Highlights
Coupons
- Category strip for restaurants, travel, kids, home and more, each with its own coupon list.
- Live type-ahead store search backed by Firestore range queries.
- Coupon cards with store logo, discount, code and a use counter.
- Copy code copies to the clipboard and increments the store's click counter.
- Shop now opens the store; Share sends the deal with an app download link.
Offers and engagement
- Store offers for Amazon, H&M, AliExpress and more, loaded from Firestore with their own search.
- Each offer opens the store page in the browser.
- Every device subscribes to the FCM
alltopic so the admin can push new deals to everyone. - Vibration feedback when a push arrives in the foreground.
App shell
- One-time onboarding using a flag stored in
shared_preferences. - Side drawer with a light and dark theme switch, WhatsApp contact, rate and share.
- Arabic UI in Google Fonts Cairo with a custom curved app bar.
Signature feature
Copy the code, open the store
- The coupon list is a Firestore query on
couponsfiltered by the selected category. - Copy code first updates the store's
clickfield, then copies the code and shows a snackbar, so the use counter on each card comes from real taps. - Shop now checks
canLaunchbefore opening the store URL and shows a snackbar if the link is broken. - Share builds an Arabic message with the store name, the discount and a link to download the app.
Screens
Engineering notes
- 01
Prefix search on Firestore
Firestore has no
LIKE, so store search uses a range query from the typed text up to the text plus the last Arabic letterي, matching every Arabic store name that starts with the query. - 02
Counting real usage
The copy action writes the click counter first and copies the code in
whenComplete, so the counter reflects real taps. - 03
Content without releases
Stores, coupons, offers and articles live in Firestore and are edited from the admin app, so new deals appear without a store update.
- 04
One-time onboarding
main()reads aninitScreenflag beforerunAppand picks the first route: onboarding or splash. - 05
Theme persistence
ThemePreferencestores the dark-mode choice andThemeProvidernotifiesGetMaterialAppto rebuild with the rightThemeData.
Results
- Published on Google Play as
com.wafer.qrushatak; the listing is no longer live, so no install numbers are claimed. - With Flutter 2.10.5,
flutter analyzereports 0 errors and 0 warnings on the 2021 codebase. - Full user-app source is included in the repository.
Stack
- Flutter
- Dart
- Cloud Firestore
- Firebase Storage
- FCM
- Provider
- GetX navigation
- flutter_typeahead
- SharedPreferences
- url_launcher
- Google Fonts
- Arabic RTL