Skip to content
All projects
Source code Delivery & commerceOpen source

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
ElMwafer banner

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

  1. 01

    Coupon codes were scattered across social media posts, and many had expired by the time shoppers found them.

  2. 02

    The operator needed to add stores, coupons and offers without shipping an update, and announce new deals right away.

  3. 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 all topic 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 coupons filtered by the selected category.
  • Copy code first updates the store's click field, then copies the code and shows a snackbar, so the use counter on each card comes from real taps.
  • Shop now checks canLaunch before 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.

Engineering notes

  1. 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.

  2. 02

    Counting real usage

    The copy action writes the click counter first and copies the code in whenComplete, so the counter reflects real taps.

  3. 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.

  4. 04

    One-time onboarding

    main() reads an initScreen flag before runApp and picks the first route: onboarding or splash.

  5. 05

    Theme persistence

    ThemePreference stores the dark-mode choice and ThemeProvider notifies GetMaterialApp to rebuild with the right ThemeData.

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 analyze reports 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