What it is
The tool the POS terminal estate is operated from. Terminals, and the merchants they belong to, are managed directly in the browser: list and detail views for devices, merchants, commands, batch operations and transactions, with a live analytics dashboard and reporting over the top.
The centre of it is that commands go out from here. A terminal is a physical device sitting on a counter somewhere, and this is the surface an operator uses to act on one — or, through batch operations, on a great many at once. That raises the stakes of ordinary interface decisions: selection, confirmation, and feedback all have to be unambiguous, because the thing on the other end of the click is hardware in the field and a transaction flow that merchants depend on.
Built zoneless
I built it from scratch, and built it zoneless — no zone.js, with signals as the state primitive throughout.
That is a meaningful choice rather than a fashionable one. The conventional Angular application gets automatic change detection by having zone.js monkey patch the browser's async APIs, so that every timer, event, and settled promise tells the framework something might have changed. It is convenient and it is indiscriminate: the framework is notified constantly, and most of those notifications concern nothing that is actually on screen. I have watched exactly that go wrong at scale — on the customer CRM, a single keystroke was triggering 17+ change-detection runs.
Signals invert it. State announces its own changes, so the framework knows what changed rather than merely that something might have, and the work it does is proportional to what actually moved. Starting from scratch meant that could be the architecture from the first commit instead of something retrofitted onto an app already shaped around the old assumptions.
I wrote up the mental model behind all of this separately, in Angular Zones Explained Through a Simple Mental Model.
Status
Current work, and still in progress — this is what I am building now, and no public link exists for it. It is internal software.