Uniform stock management for healthcare linen rooms: the coordinator app, the phone counter and the staff app, for your own server. Built from 794bab5 on 2026-09-16. Licensed under the Functional Source License (FSL-1.1-ALv2).
6.8 KiB
title, section, order, summary, screen, role, keywords
| title | section | order | summary | screen | role | keywords |
|---|---|---|---|---|---|---|
| The staff app | apps | 2 | The app for people who wear the uniform. How a staff member gets a sign-in, what they see and can do, what managers get, and how access is removed. | /my | Staff | staff app, details and access, wearer, nurse, self-service, code, slip, activation, sign in, kit, request, waitlist, damage, kit check, manager, approve, ward round, remove access |
The staff app shows one staff member their own uniform record, and lets them ask the linen room for what they need. It is at /my in any browser, and on Google Play as ThreadCount Staff, which opens the same screens. There is no iOS app.
A staff sign-in is not a coordinator account: it is attached to the person's register entry, and cannot open /app or /m.
Getting a sign-in
An Admin gives each person a one-time code from their record in the portal:
- Open the person in
People, go to theDetails & accesstab and pressGenerate a codein theStaff apppanel. - Press
Print the sliporCopy. The code is 12 characters and is shown once only. - Give the slip to the person. In the app they tap
First time? I have a code. - They enter the code, an email address and a password of at least 8 characters, and tick the terms box if shown.
The code works once. It expires 14 days after it was printed (SLIP_DAYS in lib/compute.ts). New code replaces an unused code, and Cancel the code withdraws it. A person who already has a sign-in cannot be given a code until their access is removed.
The email address is theirs to choose, but each sign-in needs its own.
A forgotten password cannot be reset by email: the linen room removes access and gives a new code.
| Record | Change | Undo |
|---|---|---|
| Staff record | A code and its print date are stored | Cancel the code |
| Staff account | Created with the email and a hashed password; the code is spent | Remove access |
What a staff member sees and can do
The bar at the bottom has Home, My kit, Orders and Messages. A fifth appears for a manager, for anybody on the ward desk, and for anybody a request is waiting on: Team, or Ward for somebody only on the desk.
- Home shows the request furthest along with its collection code once ready, how many garments they hold, and shortcuts.
- My kit lists what the linen room has recorded against them.
This isn't rightraises a query.Slipsshows each slip the counter sent them: the date, the garments and sizes, and their signature. - Request asks for garments with a reason, and goes to the manager recorded on their staff record.
- On the shelf shows each size as
In stock,LoworNone on shelf, with when it was last counted. - Waitlist is offered for a size with none on the shelf, showing their place before they join. Accepting a held garment raises a request to their manager.
- Report damage can also request a replacement; the garment leaves their record only when handed in at the counter.
- Kit check is open only while the linen room is running one; Home prompts for it, and they confirm how many of each they still have.
- Orders lists their open and finished requests, each with a message thread.
- Messages lists every thread with the linen room, newest first with the order each belongs to, and a
Start onelist of requests nobody has asked about yet. - Showing the code at the counter.
Show at the counteropens a ready request's collection code full screen — the digits, their name and what is in the bag. - Account holds their notification switches,
Change your password(a new password signs them out on every other phone or browser), the privacy links andSign out.
Notifications
On Android, the app can tell somebody when their request is approved or declined, when a bag is ready to collect, when it goes out on the ward round, when a kit check opens, and — for an approver — that something is waiting on them. Each of those is a switch on their Account screen.
A notification carries the request's reference and the garment names, and nothing else: never the collection code, never a count, never money, because the body is drawn on a lock screen. Tapping one opens that order.
Android asks permission when somebody turns a switch on, never at launch. In a browser the switches say notifications arrive in the app on their phone; an app older than the notification build says to update it. Where the server has no notification setup, the switches are greyed out and say so — see notifications.
What they never see
- prices, costs or any payment
- stock numbers: the shelf is shown in words only
- anyone else's record, unless that person reports to them as a manager
They cannot delete their own account; only the linen room can.
Manager functions
Somebody becomes a manager when a register entry names them as its manager. See Managers. They get:
- Approvals. Home shows how many requests are waiting. They approve or decline each line, with a reason when they decline.
- Approve by link. The email about a new request links to
/my/approve, which needs no sign-in. The link lasts 14 days and stops working once the request is decided or either person leaves the register. - Ward. Who on their team holds what, with each person's set count.
- Raise for your team. A request typed for someone who reports to them; it goes to the manager's own manager.
A person with On the ward desk ticked in the Staff app panel also gets Ward round, where bags delivered to their ward are signed for. Whoever signs is named on the order. See Delivery rounds.
Permissions and connection
ThreadCount Staff asks for internet access, and for permission to show notifications when somebody turns a switch on in Account. It asks for nothing else: no camera, location, contacts, files, photos or microphone. It has no scanner and works online only.
Losing signal shows a bar reading No signal. Nothing you typed is lost. with a Retry that re-checks the connection; a half-written message stays in its box. Nothing is queued to send later, and Retry never re-sends a request: it cannot know whether the first arrived, so it asks them to check Orders.
Having access removed
On the person's Details & access tab, an Admin presses Remove access in the Staff app panel and confirms. The staff account is deleted and every session ends at once. Their register entry and issue history stay.
Changing their own password also unregisters that person's phones from notifications; the phone they still hold re-registers the next time they turn a switch on.
Deactivate in the Register panel also stops their sign-in straight away, with the message You're no longer on the register at this facility. See Deactivating and deleting.