All work

Safi

Personal finance on your phone, double-entry

Role
Product and brand

The problem

Personal finance apps are written in English first, assume a single currency, and upload everything you record.

What I built

A personal finance app for the Saudi market: local-first with a double-entry ledger, multi-currency, shared accounts, and a full brand identity.

  • Every transaction is a balanced double entry, so the ledger holds however many accounts and currencies you add.
  • Data stays on the device; only shared accounts sync, over plain requests to Supabase with no third-party SDK.
  • Started in React Native, then moved to Swift and SwiftUI; the first version stays as the reference the new one is checked against.
  • The whole identity: name, logo, icon and website.

Screenshots

Safi's home page: the app on an iPhone with account balances

Stack

  • Swift
  • SwiftUI
  • SQLite
  • GRDB
  • Supabase

Building something new? Let's talk.