Product case study · Independent product · personal finance
Hisab Kitab
An offline-first personal finance app — every write lands in local SQLite first and syncs to Supabase in the background.
- Role
- Solo: product, mobile, sync
- When
- Private repository
- Links
- Private repository
- Local write
- SQLite
- Background sync
- Supabase + RLS
The problem
Money gets spent where there is no signal. A finance app that needs the network to record an expense loses the expense.
What I did
- Built the app with Expo, React Native and TypeScript
- Designed the offline-first data model and background sync
- Features: income & expenses, split bills, budgets & goals, SMS auto-import, biometric lock, CSV / JSON export
Architecture
- Writes go to local SQLite and sync to Supabase in the background
- Conflict resolution on sync
- Supabase row-level security isolates each user’s data
- expo-router for navigation; Skia for charts
Stack
- Expo
- React Native
- TypeScript
- SQLite
- Supabase
- Zustand
- React Query
- Skia