Rizq Trackr
- Client
- Personal
- Year
- 2025
- Role
- iOS · FinTech / Islamic finance
- Live site
- Visit live site
The problem
Zakat is an annual religious obligation with real financial stakes, and most people calculate it on a scrap of paper or a spreadsheet once a year. Three things make it hard: The rules are genuinely complex. Nisāb thresholds move with gold and silver prices. Property is only zakatable if held for sale — a rented flat isn't, but the rent is. Schools of fiqh disagree. You can't verify a number you can't see. An app that prints "$2,288.58" and nothing else asks for trust it hasn't earned. It's the most sensitive data a person has. Income, debts, assets, and who inherits them. Inheritance compounds all three: farā'iḍ involves fixed shares, residuary heirs, exclusion rules, and cases where shares exceed the estate and must be proportionally reduced. Getting it wrong means misdividing someone's estate.
What I built
Show the working, always. Every zakat figure and every inheritance share names the rule it rests on and cites its source (e.g. Qur'an 4:11). Where schools differ, the app says which opinion it applied. Exact arithmetic, not floating point. Inheritance shares are computed as rational numbers with GCD normalisation — 2/5 stays 2/5. Remainders go to the largest fractional parts rather than vanishing into rounding. Correctness by exhaustive testing. The farā'iḍ engine was validated by sweeping all 560 heir combinations and confirming two independent implementations (TypeScript and Swift) agree — 560 cases, 491 resolved, 69 correctly refused as contested. End-to-end encryption, with the costs accepted openly. Financial records and the will are sealed client-side (AES-GCM) before they ever reach the server. This was a deliberate trade: server-side zakat reminders and a web view of figures had to be given up, and computation moved on-device. Verification by driving the real app. Every flow was tested in the simulator against a live backend rather than assumed — which is how the significant bugs were found: a signature that rendered blank into a signed will, a save silently rejected by a validator, and entitlement checks that disagreed between client and server.
The result
A working iOS app at version 1.0 with: Zakat engine with full reasoning shown, live gold/silver prices, Hijri and Gregorian dates Farā'iḍ inheritance engine producing a typeset PDF will — signature, witnesses, clause numbering, export to Files E2EE across income, expenses, savings, assets and the will Passkeys, two-factor sign-in, per-document passcodes, Face ID gates on consequential actions Subscription tiers with honest boundaries: reading and exporting your own will stay free permanently — only editing requires a plan Live Activities, home-screen widget, offline mode, RTL and multi-locale support Regression tests cover the behaviours that broke in practice, each verified to fail when its bug is reintroduced.
Tech stack
- Swift
- SwiftUI
- SwiftData
- CryptoKit
- PDFKit
- StoreKit
- ActivityKit
- LocalAuthentication
- WidgetKit
- Convex
- Convex Auth
- passkeys
- WebAuthn
- OAuth
- email 2FA
- Next.js
- TypeScript
- AES-GCM
- iCloud Keychain sync
- XcodeGen
- Bun
- XCTest