Skip to content
UIFLEXER
Case studySample data

DawaLedger — pharmacy inventory and audit

Offline inventory, billing and audit software for retail pharmacies, with the controls a regulated shop actually needs.

The problem

Independent pharmacies run on a paper register. It records stock, credit and expiry — badly. Nobody can answer basic questions without physically counting: what is about to expire, what is owed, and who changed this number.

The hard part is not the UI. It is the audit trail. In a regulated shop, a stock adjustment needs a reason and a name attached to it, and a day's trading needs to close into a snapshot that cannot quietly change afterwards.

What we built

An offline-first Windows application on a local SQLite database, generally covering the money and stock control that a shop actually performs:

  • Purchase from a distributor with scheme and bonus landed cost, and goods returns.
  • Counter sales with FEFO, unit cycling, an MRP ceiling, audited overrides and credit limits.
  • Customer returns and refunds, stock receipt and write-off, and two-way debt settlement.
  • Expiry value at risk with a claim lifecycle, so money tied up in expiring stock is visible rather than discovered.
  • A locked daily close producing an immutable snapshot.
  • Verified backups with restore-on-startup, and a CSV export that still works after licence expiry — the data is never held hostage.

Engineering discipline

This is the part we are least willing to compromise on. The domain logic is covered by 279 passing Rust tests, with zero clippy warnings and a clean typecheck. Those tests encode the rules a shop depends on: what a valid stock movement is, how landed cost is computed, how a close is locked.

Outcome

A complete, offline MVP ready for field testing — a product built to be auditable first and pretty second, in English and Urdu.

Draft

This case study is a draft built from the product's own documentation. The metrics and claims need the owner's sign-off before publication.

Start a project like this.

Tell us about the constraints. We'll tell you whether we can hold up to them.