Skip to content
Ankit Raminwar
All work

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
  1. Local write
  2. SQLite
  3. Background sync
  4. Supabase + RLS
System flow

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
Esc
↑↓ navigate↵ open