Skip to content
Nilesh Karn
Development

Personal

Pharmacy System — Retail Dispensing and POS

A pharmacy management system for a retail counter: catalogue, suppliers, purchases, per-batch stock, and a point-of-sale screen that dispenses against the right expiry lot.

Stock is tracked per batch and expiry rather than as a single quantity, so the point of sale dispenses the lot that expires first and expiring stock is visible before it has to be written off.

pharmacy dashboard

Overview

A layered Domain-Driven Design solution on the ABP Framework (.NET 10) with an Angular 20 front end. Nine modules sit on one domain model, and a StockManager domain service holds the rule everything else depends on: every purchase item increases a batch, every sale item deducts a specific medicine, batch and expiry lot. Access is governed by ABP permissions, and the migrator seeds three working roles — Manager, Pharmacist and Cashier — rather than leaving one admin account to stand in for a real counter.

  • Medicine catalogue with generic name, unit, barcode, purchase and sale price, and reorder level
  • Suppliers, customers and categories as master data
  • Purchases that increase per-batch stock, sales that deduct a specific expiry lot
  • Point of sale with FEFO batch selection, cart, discount and an 80 mm thermal receipt
  • Per-lot stock on hand, with low-stock and expiring-stock views
  • Dashboard: sales and purchase trends, top sellers, stock by category, expiry timeline
  • Role-based access — Manager, Pharmacist and Cashier, seeded by the migrator