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.
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
-
Users
- Mobile app · Flutter
- Admin dashboard
-
Backend
- Laravel API
- Wallets & recorded exchange (key component)
- Recurring entries
- Reports
-
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.