On a device
Three apps, and one you install from the browser
Staff, customers, suppliers and the counter are not the same person, but they do not need six codebases either. Two apps are written, one is worth writing, and everything else is the workspace itself — installed from Chrome or Edge, in its own window, still working when the line drops.
Nothing of ours is in Google Play or the App Store today. The first listing, when there is one, will be POS.
The three apps
Workspace and Portal are in this repository in Dart. POS is the one still to be written, and the page says so rather than pretending.
thexsys Workspace
apps/mobile/workspace
- Status
- In the repository
- Audience
- Tenant staff: owners, admins, every department — and the technicians and drivers who work away from a desk
- Platforms
- AndroidiOSTablets
Approvals, quotes, invoices, stock counts, customers, timesheets, HR self-service and Discuss. The field screens — today’s jobs, checklists, photos, signatures, deliveries — sit inside this app behind role gating instead of becoming an app of their own.
thexsys Portal
apps/mobile/portal
- Status
- In the repository
- Audience
- The tenant’s customers and the tenant’s suppliers, in one codebase
- Platforms
- AndroidiOS
Two shells, one app. A customer sees their matters, appointments, invoices, documents and payments; a supplier sees requests for quotation, the quote form, purchase orders, bills and the statement. Which shell opens follows who signed in, so the separately-planned Vendor app is not a separate app.
thexsys POS
—
- Status
- Not built yet
- Audience
- The till, the restaurant floor, the jewellery counter and the delivery counter
- Platforms
- AndroidTablets
The only new native app in the plan, and it is not written yet. A counter needs a tablet locked into kiosk mode, a cash drawer and a thermal printer on the desk, and a session that keeps selling when the line drops — four things a browser tab cannot be trusted to give.
The installable web app
Everything else is a browser you install
The workspace is a progressive web app, and not in name only: a service worker that precaches the shell so the first launch after an install needs no network, an outbox in IndexedDB that queues a sale, a round or a wash while the connection is gone, a sync journal at /app/sync that shows every queued operation and what the server said to it, and a manifest with shortcuts straight to the till, the restaurant floor and the kitchen display. Open it in Chrome or Edge, choose install, and it is a windowed app with its own icon. That is a deliberate choice: the same screens, both languages, updated the second we deploy, with no review queue standing between a fix and the person waiting for it.
What installing it gives you
- A windowed app with its own icon on Windows, macOS, Android and ChromeOS
- A launch with no connection at all, because the shell is precached and the catalogue sits in IndexedDB
- An outbox: what you do offline is queued, replayed in order with an idempotency key, and shown to you in the sync journal until it lands
- The camera, for photographing a document, a delivery or a job before and after
- Location, for stamping attendance and a site visit where it actually happened
- Every fix on every device the moment it deploys — no store review, no version stuck on an old phone
What it does not give you
- No App Store or Google Play listing. There is nothing to search for, and on an iPhone installing means Add to Home Screen from Safari.
- No push you can build a shift on. Web push on iOS only works once the app is on the home screen, and we do not send it yet on any platform.
- No thermal printing everywhere. A browser prints through the system dialogue; a counter printer on USB or Bluetooth, a cash drawer and a kiosk lock are exactly why POS is a native app.
And three consoles that need no app at all
Admin console
Platform operators work at a desk with many rows on screen. A phone-sized version of a tenant list helps nobody.
Partner portal
Deals, commissions and certificates are read, filed and argued over on a laptop, not on a bus.
Developer portal
Keys, webhook deliveries and an OpenAPI reference belong next to an editor and a terminal.
Why three and not six
The plan used to be six apps: staff, customers, vendors, field, POS and admin. Four of those were never written, and building them would have meant four more release trains for screens the same person already reaches. A supplier is a shell inside Portal, because the identity differs but the device does not. A technician is a role inside Workspace, because the job list is the same records under different permissions. An operator gets a browser. What survives that cut is a till, and a till is genuinely different hardware.