← All work
Client Project Live

Lazz POS Offline

Offline-first pharmacy POS. Tauri + SQLite desktop app that syncs when connectivity returns.

Built an offline-first pharmacy POS desktop application for the TajTech group. The app runs on Tauri + SQLite locally, handles sales, inventory, and invoicing even without internet, then syncs with the Lazz POS cloud backend (CodeIgniter 4 + MariaDB) when connectivity returns. Supports pharma and non-pharma product modes, thermal receipt printing, multi-branch operations, and dirty-tracking with conflict resolution for offline sync.

Key decisions

  • Offline-first with dirty tracking: Every local mutation gets a dirty flag and timestamp. When connectivity returns, the sync engine resolves conflicts using last-write-wins with manual review for price conflicts. Pharmacies can't afford downtime.
  • Tauri over Electron: 50MB installer vs 200MB+. Native OS integration for thermal printers and barcode scanners. Rust backend for SQLite operations — fast and memory-efficient on pharmacy hardware.
  • Dual product modes: Pharma mode enforces batch tracking, expiry dates, and regulatory fields. Non-pharma mode is streamlined for general retail. Same app, different workflows based on product category.
  • .NET 9 ProductService microservice: Separate microservice handling product catalog sync across branches. PostgreSQL, EF Core, Redis caching, RabbitMQ for event-driven updates between branches.

Stack

Tauri · SQLite · React · TypeScript · CodeIgniter 4 · MariaDB · .NET 9 · PostgreSQL · Redis · RabbitMQ