Overview
POS is not a calculator — it is the front end of inventory and finance.
Problem statement
Sales did not reduce stock until someone updated a sheet at night.
Requirements and constraints
Fast search, barcode, discounts with permission, returns, payment split, Z report.
Proposed architecture
Laravel backend, counter UI in browser or desktop wrapper, sync to central MySQL.
Database design
Sales headers/lines, payments, stock movements, and shift registers.
API design and authentication
Optional offline queue for brief connectivity loss when explicitly scoped.
Security
Cashier roles cannot change prices without override.
Performance
Product cache warmed for busy SKUs.
Testing and deployment
End-of-day cash reconciliation against system total.
Challenges and lessons
Returns after partial payment promotions.
Verified results
Branch managers trust same-day stock and sales numbers.