Mobile

Personal ProjectPublic Project

Private Vault

An offline-first personal finance app for Android and iOS: multi-currency wallets, lending, budgets, investments and receipt scanning, with the phone as the source of truth and cloud sync optional.

Product overview

Your money, kept on your phone.

Private Vault records everything on the device first. It works fully offline, keeps each currency on its own, and syncs across phones only when you choose.

Get it on Google PlayiOS coming soon
  • 49screens
  • 57Klines of TypeScript
  • 1,685tests passing
Private Vault home screen in the light theme
Private Vault home screen in the dark theme, greeting Gokul Pathak, with a total balance of NPR 9,23,940 and separate INR and USD balances

01 路 Multi-currency wallets

Every wallet. Every currency.

Bank, cash, e-wallet and card accounts in whatever currencies you use. Each balance stays in its own currency and is never silently converted.

  • As many currencies as you use
  • Totals per currency
  • Lakh-style number formatting
Accounts screen in the light theme, listing NPR, USD and INR accounts
Accounts screen in the dark theme

02 路 Everyday tracking

Every rupee, recorded in seconds.

One-tap shortcuts for expenses, income, transfers and lending. Every day is grouped with its total and its Nepali calendar date.

  • One-tap shortcuts
  • Nepali calendar (BS) dates
  • Recurring bills, CSV export and backups
Transactions list grouped by day with Nepali calendar dates
Home screen showing the people summary, shortcuts and monthly budget

03 路 Receipt scanning

Snap a receipt. Review. Save.

Text is read on the phone itself, a category is suggested, and nothing is saved until you confirm. Amounts, dates, notes and the photo never leave the device.

  • On-device text recognition
  • Every detected field is reviewable
  • Nothing saved without confirmation
Review Receipt screen with an amount of NPR 2,845 and a suggested Groceries category

04 路 Lending & borrowing

Lend to friends. Never lose track.

Money lent or borrowed stays on the books as money owed, not spending, with partial repayments tracked person by person.

  • Money given and taken
  • Partial repayments
  • History per person
People list showing NPR 17,000 to receive and NPR 8,000 to pay
A person's page, partly paid, still owing NPR 12,000

05 路 Investments

Track what you own, not just what you spend.

Record buys, sells and dividends. Cost basis, realized and unrealized gains are worked out for you, and kept apart from your cash balance.

  • Buy, sell and dividend history
  • Gains worked out for you
  • Each currency shown on its own
Investments screen with an NPR portfolio worth 2,34,100 and its holdings

06 路 Budgets & reports

Know where you stand, before the month ends.

Monthly and category budgets with clear over, at and within states, plus six-month trends and spending by category.

  • Category budgets
  • Six-month trends
  • Spending breakdowns
Budgets screen, 69% of the September budget used
Reports screen with a six-month income versus expense chart

07 路 Privacy & security

Private by default. Yours by design.

Balances stay hidden until you tap the eye, and hide again when the app leaves the screen. App lock and on-device storage keep your money yours.

  • Hidden balances
  • PIN and biometric lock
  • Row-Level Security in the cloud
Home screen with every balance hidden behind an eye toggle

Under the hood

Offline-first. Synced when you choose.

The phone is the source of truth. The cloud is a backup and a bridge between devices, never a requirement.

This phone

  • SQLite, the source of truth
  • Outbox, every change queued
Push 路 Pull

Supabase

  • Postgres + Row-Level Security
  • Ordered change feed
  • Edge Functions
Push 路 Pull

Another phone

  • SQLite, the source of truth
  • Outbox, every change queued

Works fully offline

Every screen reads local SQLite; nothing waits on a network.

Sync that never loses data

Durable outbox, ordered change-feed cursor, idempotent uploads.

Multi-device conflicts

Resolved by deterministic rules; a deletion always wins.

Private by design

Row-Level Security: an account can only read its own rows.

Exact money math

Stored as integer minor units, never floating point.

On-device OCR

ML Kit on Android, Apple Vision on iOS; the photo stays local.

Built with

Mobile

React NativeExpoTypeScriptExpo RouterReanimatedML Kit OCR

Data

SQLiteDrizzle ORMZodReact Hook Form

Cloud

SupabasePostgreSQL + RLSAuthEdge Functions

Quality

VitestStrict TypeScriptESLintPrettier

Project details

Role

Product Designer, Mobile Developer

Category

Mobile

Timeline

2026

Services

Product DesignMobile DevelopmentOffline-first SyncDesign System

Highlights

  • Designed and built the app end to end with React Native, Expo and TypeScript, on a local SQLite database through Drizzle ORM.
  • Engineered optional cloud sync on Supabase: a durable outbox, an ordered change feed and deterministic conflict rules, protected by Row-Level Security.
  • Modelled money as integer minor units, with multi-currency wallets that are never silently converted.
  • Shipped a dark and light design system, a hidden-balance privacy mode, app lock, Nepali calendar dates and on-device receipt scanning, backed by 1,685 automated tests.

Screenshot Types

Desktop / Dashboard screens

0 visuals

Mobile screens

6 visuals

What I Focused On

Offline-first

Privacy

Clarity

Personal project, live on Google Play with iOS coming soon. The source repository is currently private.

Screenshots

Screenshot 1

Frame 01

MobileNDA-safe
Screenshot 2

Frame 02

MobileNDA-safe
Screenshot 3

Frame 03

MobileNDA-safe
Screenshot 4

Frame 04

MobileNDA-safe
Screenshot 5

Frame 05

MobileNDA-safe
Screenshot 6

Frame 06

MobileNDA-safe