Skip to content
Omar Aldanaf

Case study

POSDashboardInventory Confidential

Veterinary pharmacy POS

Point-of-sale and management system for a veterinary pharmacy in the UAE, covering sales, batch inventory, prescriptions, purchasing, finance and staff.

Client
Confidential client
Industry
Veterinary pharmacy
Status
In progress
POS terminal: barcode search, species filters and a cart with VAT.
automated tests
299
API routes
199
permissions across 6 roles
85+

Overview

A complete operating system for a veterinary pharmacy in the UAE. The touch- and keyboard-friendly POS handles barcode scanning, split payments, held carts and discount approvals, while the back office covers batch and expiry tracking, prescriptions, suppliers and purchasing, cash and VAT accounting, reporting, HR and administration. The system is fully bilingual, with Arabic as the default and a complete right-to-left layout.

The problem

The pharmacy needed to sell quickly at the counter while staying compliant: medicines tracked by batch and expiry, prescription-only and controlled products enforced, UAE VAT invoices issued correctly, and every cashier working within clear limits.

What I built

  • A React single-page app on a Laravel REST API, with cookie-based authentication
  • A service layer where every sale runs in one database transaction with row locks
  • Role-based access with 85+ permissions, six roles and per-user overrides
  • Bilingual PDF documents with a custom Arabic text shaper

Key features

  • 01POS with hardware barcode scanning, keyboard shortcuts, split payments across six methods, held and recalled carts, and a per-user draft that survives a refresh
  • 02Shift management per terminal, with opening balance, cash count and expected-versus-counted reconciliation
  • 03FIFO stock deduction by earliest expiry, with batch tracking, low-stock and expiry alerts, and barcode label printing
  • 04Prescription enforcement for prescription-only products and an audit trail for controlled substances
  • 05Discount escalation: cashiers request a discount and approvers accept or reject it while the sale is open
  • 06Purchasing workflow from purchase order to supplier invoice, return and payment
  • 07Finance: safes, expenses, customer and supplier balances with ageing, profit and loss, cash flow and VAT reports
  • 08UAE tax invoices, tax credit notes and daily sales reports as bilingual PDFs
  • 09Role-aware dashboard, notification centre, HR attendance and an audit log
  • 10Sign-in by email and password or a 4-digit POS PIN, with optional two-factor authentication

Architecture

  1. React SPA
  2. Laravel REST API
  3. Service layer
  4. MySQL
Architecture: React SPA to Laravel REST API to Service layer to MySQL

Screens

Back-office dashboard.
Fast PIN sign-in for the till.
Sign-in on a phone.

Decisions & challenges

Every sale is one transaction

Checkout locks the shift and the stock batches, deducts stock FIFO, records tax at the rate charged and updates balances in a single transaction, so stock cannot be oversold.

Permissions enforced twice

The interface hides what a user cannot do, and every permission is checked again on the server for each API route.

Arabic on printed documents

The PDF engine cannot join Arabic letters, so a custom shaper processes every document, including Arabic-Indic digits and line wrapping.

Performance & security

Security

  • TOTP two-factor authentication with single-use recovery codes, and management of active sessions
  • Tax exemptions restricted to the owner and unlocked only by re-entering a PIN, with every change audit-logged
  • Prescription files stored privately and served only through permission-checked endpoints
  • Rate-limited sign-in and hardened security headers

Inventory

Profile

Developer toolkit

  • GitHub

Systems toolkit

System

omar@world01

Client-side command palette. Type help to list commands.

WORLD_01 map

  1. SPAWN // OMAR Spawn Point / About
  2. CRAFTING // STACK Crafting Workshop / Skills
  3. MINE // PROJECTS Project Mine / Projects
  4. LAB // ARCHITECTURE Logic Lab / Architecture
  5. OPS // INFRASTRUCTURE Server Room / Infrastructure
  6. HALL // EXPERIENCE Achievement Hall / Experience
  7. PORTAL // CONTACT Portal / Contact