For IT & infrastructure
On-premises TypeScript. PostgreSQL. Your infrastructure.
One Node.js artifact running as a supervised service on your plant LAN, PostgreSQL as the database. No cloud dependency in the operational path. If the internet goes down, the plant keeps scanning.
Tech stack
What’s under the hood
Everything your team needs to evaluate, deploy, and maintain the system — without surprises.
Stack
TypeScript, Node.js, Remix, PostgreSQL
One codebase, one deployable artifact. Vorrex Server is a TypeScript application on Node.js, serving Remix through its own Fastify server. Vorrex Terminal runs in a browser in kiosk mode. Vorrex Manager and Vorrex Portal are server-rendered routes of the same app. Vorrex Me and Vorrex Go are installable PWA routes.
Deployment
One artifact, plant or hosted mode
Vorrex Server installs as a supervised OS service — systemd on Linux, a wrapped Windows Service on Windows. Vorrex Setup handles the first-time install including database provisioning. Your team controls the deployment topology.
Data Ownership
PostgreSQL — your database, your backups
Standard PostgreSQL — your team can query it directly, back it up with standard tooling, and export at any time. No proprietary formats. No vendor-only access to your own records. If you leave, you take everything.
Authentication
First-party sessions + capability gating
Opaque session ids stored hashed in Postgres, with Argon2id password hashing and TOTP for admin roles. Every capability is resolved server-side per request — a wash operator cannot access inspection screens. Registered-device PIN authentication on Vorrex Terminal for plant-floor speed without sacrificing identity.
Audit Trail Integrity
PostgreSQL constraint-enforced immutability
The compliance event table is insert-only. A PostgreSQL trigger blocks UPDATE and DELETE at the database layer — not application code. No bug, no DBA mistake, and no future developer can erase compliance history. Your auditors will appreciate this.
Continuous Verification
Invariant suite run against real PostgreSQL
Every state machine transition and every compliance rule is proved against a real PostgreSQL container in CI — the suite proves the database refuses invalid writes, not just that the app avoids them. Runs on every change. Zero tolerance for regressions in compliance logic.
Integrations
Hardware and services
Standard protocols and self-hosted services where possible. No per-scan API fees, no mandatory cloud subscriptions for core functionality.
Scanning
Code 128 barcode at every station. RFID-ready architecture for future UHF tunnel scanning.
Label Printing
Zebra thermal printers. ZPL over CUPS. Barcode labels from the system.
Route Planning
Self-hosted route optimisation engine. No per-request API fees.
SMS
Twilio SMS via an outbox with delivery evidence, for wearer notifications, delivery confirmations, and coverage alerts.
Rules, not code
Ordered routing rules, configured in Vorrex Manager.
Laundry managers configure garment routing as ordered first-match rule lists per garment type in Vorrex Manager. Rules are versioned, and every routing decision records the rule that fired. IT configures once — operations owns it after that.
Platform capabilities
Built for operational teams. Inspectable by IT.
Features your team will want to evaluate — authentication architecture, CI pipeline, printing infrastructure, and multi-site operations.
Deny-by-default routes
Every route declares its capability, or the server refuses to boot
Every route and endpoint declares its required capability. A boot check walks the full route manifest, and a new route with no declaration stops the process — it does not warn and it does not fall open.
Three auth contexts
Complete isolation between plant, portal, and wearer
Plant staff authenticate with registered-device PIN and capability gating — different capabilities gate different modes on Vorrex Terminal and Vorrex Manager. Fire brigade H&S managers log into Vorrex Portal with their own credentials in a separate session realm. Firefighters use PIN login on Vorrex Me. No shared auth state between the three contexts.
Continuous integration
Gitea Actions + a real PostgreSQL container on every push
Every code change triggers typecheck, lint, module-boundary and schema checks, and the full invariant suite against a real PostgreSQL container before anything reaches your plant. Zero tolerance for regressions in compliance logic. Your team inherits a codebase that's tested to its boundaries.
Print from the product
Zebra ZPL labels, Chromium-rendered PDFs
Labels print automatically on workflow transitions — garment scanned at goods-in, batch label at wash programme assignment, dispatch label at pack. Compliance packs and destruction certificates render from the product's own print routes with headless Chromium, so paper matches screen.
Inter-Plant Transfer
Full audit trail across facilities
Move garments between facilities with transfer manifests, receiving confirmation, and lifecycle events recorded at both ends. The sending plant creates the manifest, the receiving plant confirms receipt. Variances are flagged. Every transfer is a first-class lifecycle event — fully auditable.
Walk through the architecture with your team.
45 minutes. We cover deployment topology, database design, authentication model, and how the invariant suite proves the database refuses invalid writes — whatever your team needs to evaluate before signing off.