Live — Shipped and running in production2026
Solo build
- Client
- A personal finance tracker for Pakistan that you never have to type into: it reads the SMS your bank already sends, files each transaction, and only asks when it genuinely does not know.
- Recruiter
- Solo build across web and mobile: a Vite and React 19 PWA and an Expo Android app sharing one TypeScript core, on Supabase with row-level security, plus a native Kotlin SMS capture module and over-the-air updates.
- Engineer
- There is no bespoke API: both apps talk to Postgres directly behind row-level security, and bank SMS reach one ingest function through a native receiver, a notification-listener fallback and a retry queue.
What it does
- Spending logged automatically from the bank SMS you already receive
- Transactions categorised from what you have taught it, with a review inbox for anything new
- Installable on the web, with a native Android app
- Multi-user, with every person's data private to them
Under the hood
- An npm-workspaces monorepo: the PWA and the Android app share one core — types, money handling, the Supabase client and the whole React Query data layer
- Android capture through a manifest-registered SMS receiver, a notification-listener fallback and a WorkManager retry queue, all posting to one Edge Function
- Money stored as numeric(14,2), always positive, with direction taken from the transaction type — never a signed float
- iOS has no SMS API, so capture there is deliberately manual rather than faked
Built with
- React 19
- TypeScript
- Vite PWA
- Expo (React Native)
- Kotlin
- Supabase
- PostgreSQL
- Row-Level Security
- React Query
- EAS Update