Skip to content
JMJahanzeb Mohsin
All work

Case study Nº 05

Android app

Dukaan Book

A ledger for small shops that keeps working when the internet does not.

Type
Android app
Stack
Flutter · Dart · Riverpod · Drift · Supabase
Dukaan Book dashboard with account balances and recent activityAccounts for cash, mobile wallets and bankTransaction history
Fig. 1 · Dukaan Book dashboard with account balances and recent activity

A Flutter app for shops that run on cash, EasyPaisa and JazzCash. It records every cash in, cash out, transfer and expense, closes the day with a report, and syncs to the cloud whenever a connection is available.

1

Who it is for

Small mobile-wallet shops in Pakistan move money between cash, EasyPaisa, JazzCash, NayaPay and bank accounts all day. The typical user has one Android phone and patchy internet, so the app has to stay fast and correct offline.

The shopkeeper sees live balances and the day so far on the dashboard, records entries in a few taps, and closes the day with a report that can be exported as a PDF and shared. A reminder fires at closing time.

2

Offline first, for real

Every write goes to a local Drift (SQLite) database and an outbox table. A sync service pushes the outbox and pulls remote changes when the connection comes back. Supabase has no built-in offline sync, so this part is custom.

3

Getting money right

Amounts are stored as whole paisa, never as floating point numbers. Reports use the Asia/Karachi business day whatever the phone time zone is set to. On the server, row-level security limits every table to members of the shop.

□

Plates

Accounts for cash, mobile wallets and bank
Fig. 2 · Accounts for cash, mobile wallets and bank
Transaction history
Fig. 3 · Transaction history
Adding an expense
Fig. 4 · Adding an expense
Day-end report with closing balances
Fig. 5 · Day-end report with closing balances