All work
Case study Live

Muqtasid (مُقتصد)

A multi-currency expense wallet for people who earn and spend in US dollars, Syrian pounds and Saudi riyals — with a mobile app, an admin dashboard and monthly reports.

Illustration: three wallet cards in US dollars, Syrian pounds and Saudi riyals, an exchange icon, and a spending donut chart.

The problem

Many Syrians working in the Gulf earn in riyals, send money home in dollars, and their families spend in Syrian pounds. Most expense apps assume one currency, so people end up with notes and mental maths instead of a clear picture.

The users are not technical either. The app had to be simple enough that someone who has never used a finance app can track money across three currencies.

What I did

  • Built the Laravel admin dashboard and API, deployed on Railway.
  • Built the Flutter mobile app on top of the same API, fully in Arabic.
  • Built wallets in USD, SYP and SAR, with currency exchange at the rate the user enters.
  • Built expense categories with sub-types, so one tap says where the money went.
  • Added monthly recurring entries, such as salary, rent and fixed bills, that post themselves on their day.
  • Built reports per currency and period, with PDF sharing in the app and Excel and PDF download in the dashboard.
  • Added tips that compare spending with the same days of last month, in the app and in the dashboard.
  • Kept sign-up simple: the admin creates users from the dashboard, and can suspend or reactivate them, with no codes or extra steps.

Architecture

  1. Users
    • Mobile app · Flutter
    • Admin dashboard
  2. Backend
    • Laravel API
    • Wallets & recorded exchange (key component)
    • Recurring entries
    • Reports
  3. Hosting
    • Railway

The hard part: Three currencies, and a balance that never changes by itself.

The Syrian pound moves fast, so any app that converts balances with a live rate shows a different total every day — even when nobody spent anything. That confuses users and breaks their trust.

So each wallet keeps its own currency, and money only moves between currencies through an exchange the user records, at the rate they actually got (for example, 1 $ = 137.50 SYP). Past entries keep the rate they were made at, so old balances and reports never change.

Step USD wallet SYP wallet
Start (sample) 200.00 $ 0.00 SYP
Exchange 100 $ at 137.50 100.00 $ 13,750.00 SYP
Rate changes next day 100.00 $ (unchanged) 13,750.00 SYP (unchanged)

Results

  • 3 currencies: USD, SYP, SAR
  • 2 apps on one API: dashboard and mobile
  • 1 month from idea to live, built solo
  • Auto monthly salary and fixed expenses

What I’d do differently

Store the exchange rate with every entry from the start. Calculating old amounts from today’s rate is the fastest way to lose a user’s trust.

Three phone screens: the wallet with three currency balances, a new expense with categories, and a currency exchange at a user-entered rate.

Wallet, new expense and currency exchange — the user types the rate the money changer actually gave. Sample data. · 1 / 6