Skip to content
Theme
Let's talk ->

Works/POS System

POS System

Point of sale configurable per business domain, with a hexagonal core and atomic transactions.

SectorRetail / point of saleYear2026RoleArchitecture and full-stack developmentView codeView code ->
The challenge
A point of sale that worked the same for hardware, retail and electronics, without forking the code per client.
The solution
Agnostic domain core, ports and adapters, Prisma with atomic transactions, RBAC and domain events. Barcode scanner and store credit.
The outcome
A core configurable through product metadata and units, with sales, customer debt and cash closing in the same transaction.

Context

Every business calls the same thing differently: unit, kilo, box, metre. A closed POS forces you to duplicate the project for every industry.

Decision

The domain knows nothing about Vue or Prisma. Use cases orchestrate ports, and the infrastructure implements those ports with Prisma. Payment, stock deduction and customer debt happen in a single atomic transaction.

Technical details

  • Hexagonal architecture with ports and adapters.
  • RBAC for administrator and cashier, verified on the server.
  • Domain events for completed sale and low stock.
  • Interchangeable payment strategies: cash, card and store credit.

What I learned

Real configurability is not in the forms: it is in the model. If the product can describe its units and metadata, the POS does not need an if per industry.

[10] let's talk

Is your operation falling apart?

Tell me where it hurts: parallel spreadsheets, stock that never matches, processes that depend on one person. You get a diagnosis, not a blind proposal.