ThreadCount Community edition
Uniform stock management for healthcare linen rooms: the coordinator app, the phone counter and the staff app, for your own server. Built from 2d04e45 on 2026-09-15. Licensed under the Functional Source License (FSL-1.1-ALv2).
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: Set up in an afternoon
|
||||
section: start
|
||||
order: 2
|
||||
summary: From creating the facility to the first garment issued at the counter, in the order the Getting set up checklist on Today asks for it.
|
||||
screen: Today
|
||||
role: Admin
|
||||
keywords: sign up, signup, create account, new facility, setup, onboarding, checklist, getting set up, welcome, plan, trial, import, opening stock, opening balance, first issue
|
||||
---
|
||||
|
||||
## Create the facility
|
||||
|
||||
Sign-up is three steps.
|
||||
|
||||
1. **You.** First name, last name, work email and a password of at least 8 characters. Password resets go to that email, so it has to be right. Where the server publishes terms or a privacy policy, `Next: your facility` stays off until you tick that you agree and can act for the facility.
|
||||
2. **Your facility.** The facility name, plus two optional answers. `Setting` (Hospital, Aged care, Community health or Other) chooses a starting list of staff groups. `State or territory` sets the time zone that counts and month-end are read in, and nothing else.
|
||||
3. **Plan**, or **Confirm** when the server is not offering plans. Where the server uses Cloudflare Turnstile, its security check shows above the create button.
|
||||
|
||||
The plan step offers two choices. Neither takes a card.
|
||||
|
||||
| Plan | Price | Limit |
|
||||
|---|---|---|
|
||||
| Hosted Small | Free | Up to 60 staff records |
|
||||
| Hosted Facility | 30-day trial | Then $1,290 a year |
|
||||
|
||||
Health Service is not offered at sign-up. A Community edition server has no plans and no staff-record ceiling.
|
||||
|
||||
## What is written
|
||||
|
||||
| Record | Change | Undo |
|
||||
|---|---|---|
|
||||
| Facility | Created with your name as coordinator, the plan you chose, any seeded staff groups and the time zone | See [Delete an account](/docs/account/delete-an-account) |
|
||||
| User | You, as `Admin`, with the title Uniform Coordinator | Edit under `Settings › People & sign-in` |
|
||||
| Email | A welcome note to the address you typed | None |
|
||||
|
||||
Sign-up is refused for an email that already has an account, and after 5 sign-ups from one connection in an hour. `Open ThreadCount` then takes you to `Today`, where the checklist is titled `Welcome to ThreadCount`.
|
||||
|
||||
## Staff groups
|
||||
|
||||
Staff groups are under `Settings › Issuing rules`, on the board headed `Staff groups and how they get uniform`. It has three columns, one per route: `FTE table`, `Starting kit` and `Manager approval`. An Admin drags a group between columns, or opens its menu for `Move to …`, `Rename` and `Remove`. Type a name in `New group name` and press `Add group` to add one.
|
||||
|
||||
`Rename` moves every staff record filed under the group to the new name, along with garments tagged for it, and keeps its route. A group with active people filed under it cannot be removed. The rules for each route are on [Groups and routes](/docs/people/groups-and-routes).
|
||||
|
||||
## Load your data
|
||||
|
||||
`Settings › Data & audit log` has `Import from CSV`, which takes a spreadsheet saved as CSV. The `Import the register` button on `People` opens it with the staff register chosen.
|
||||
|
||||
1. **Choose what you are importing** from the list.
|
||||
2. **Press `Download template`** and fill it in.
|
||||
3. **Press `Import CSV`** and choose the file. Re-importing updates matching rows.
|
||||
|
||||
Import is shown to Admins only, and each user is limited to 20 imports in 10 minutes. Import the staff register and the catalogue first. The columns each template takes are on [CSV templates](/docs/reference/csv-templates). Add suppliers under `Settings › Catalogue & suppliers`, with their order email and `Lead time (days)`.
|
||||
|
||||
## Opening stock and the first issue
|
||||
|
||||
Set reorder levels on each garment's page, which opens from `Stock › On hand`. In the `Sizes` panel, the `Reorder at` column has minus and plus buttons for each size. To set one level across many garments, tick them on `On hand` and use `Set reorder`.
|
||||
|
||||
Then press `Adjust quantity` at the foot of `On hand` and choose `Opening balance`, which overwrites a line's opening balance and is for start-up only. Only an Admin can set an opening balance or a reorder level.
|
||||
|
||||
When the shelf is loaded, open `Counter`, find someone on the register and issue a garment. [Issue a garment](/docs/counter/issue-a-garment) walks through the counter.
|
||||
|
||||
## The setup checklist
|
||||
|
||||
`Today` shows a checklist, titled `Getting set up`, of six things a new facility does once.
|
||||
|
||||
| Step | Button |
|
||||
|---|---|
|
||||
| Add staff, or import the register | `Settings › Data` |
|
||||
| Add garments | `Settings › Data` |
|
||||
| Set reorder levels | `Stock` |
|
||||
| Record opening stock | `Stock` |
|
||||
| Issue a garment | `Counter` |
|
||||
| Bind a barcode or print labels | `Stock` |
|
||||
|
||||
Each tick comes from the records, not from a click. For example, the first step is ticked once the staff register has a row in it. Every step still to do has a button to the screen that does it.
|
||||
|
||||
The checklist disappears once all six are ticked, or once the facility is 60 days old and three or more are ticked. An Admin can hide it sooner with `Dismiss`, and it stays hidden for the whole facility. It does not appear in the phone app.
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
title: The two roles
|
||||
section: start
|
||||
order: 3
|
||||
summary: What an Admin can do that an Issuer cannot, as the server enforces it, and what staff see when they sign in to the staff app.
|
||||
screen: Settings › People & sign-in
|
||||
role: Anyone
|
||||
keywords: roles, permissions, admin, issuer, access, user, users, staff sign-in, staff app, activation code, who can
|
||||
---
|
||||
|
||||
## Two roles, checked on the server
|
||||
|
||||
Every user of the linen-room app is either `Admin` or `Issuer`. The server checks the role on every change, so hiding a button is not the only protection. If an Issuer attempts a change they are not allowed to make, the server refuses it with `Admin only`, whichever screen it came from.
|
||||
|
||||
Your name and role are at the foot of the menu, or at the bottom of the `More` sheet on a phone. A sign-in lasts 14 days, or 30 days if you tick to stay signed in on that computer. Changing a password ends every older sign-in for that user.
|
||||
|
||||
## What each role can do
|
||||
|
||||
An Admin can do everything an Issuer can, plus everything in the Cannot column. The one thing an Admin cannot do is remove or demote the last active Admin.
|
||||
|
||||
| Role | Can | Cannot |
|
||||
|---|---|---|
|
||||
| Issuer | Issue, return, swap sizes and take hand-ins on `Counter` | Add, edit or delete catalogue items, sizes or barcodes |
|
||||
| Issuer | Work requests, pickups and delivery rounds | Change reorder levels, supplier codes or catalogue prices |
|
||||
| Issuer | File a count on `Stock › Count`, receive stock, add to the pre-loved pool | Set on hand, adjust or write off stock, or set opening balances |
|
||||
| Issuer | Create an order with `New order` or `Order for a person`, and receive deliveries | Raise the `To order` list, email a supplier or cancel an order |
|
||||
| Issuer | Read `People` and `Reports` | Add, edit or delete staff, departments or locations, or generate staff-app codes |
|
||||
| Issuer | Read `Settings`, where the fields are disabled | Change settings, staff groups, suppliers, users or the plan |
|
||||
| Issuer | Change their own details and password | Read the audit log, import CSV, restore a backup, wipe or reset data |
|
||||
|
||||
On `Orders`, an Issuer sees `Recent orders` where an Admin sees `To order`. The `Mark ordered` and `Order sheet` buttons on an order, and `Mark shipped` in its menu, are shown to Admins only.
|
||||
|
||||
## Managing users
|
||||
|
||||
Admins see the `Users` list under `Settings › People & sign-in`, with `Add user` and an `Edit` button on each row. The user dialog's `Role` sets `Admin` or `Issuer`. The facility must always have at least one active Admin, so the server will not demote or remove the last one and replies `Keep at least one active admin`. See [Users](/docs/account/users).
|
||||
|
||||
## Staff sign-ins
|
||||
|
||||
Staff on the register are not users, and they never have either role. A staff member signs in to the staff app, at `/my`, with a separate account.
|
||||
|
||||
1. **An Admin generates a code** on the person's record, under `People › Details & access`, in the `Staff app` panel. It is twelve characters in three groups, and `Print the slip` prints it.
|
||||
2. **The staff member activates it** at the staff sign-in with `First time? I have a code`, then chooses an email and password. A code generated 14 or more days ago is refused as expired.
|
||||
3. **After that they sign in** at the staff sign-in, or through the ordinary sign-in on the website.
|
||||
|
||||
A staff sign-in lasts 30 days. It is a different kind of session from a user's, so it cannot open the linen-room app. A user's session shows nothing in the staff app either.
|
||||
|
||||
## What staff can see
|
||||
|
||||
The staff app menu is `Home`, `Kit`, `Orders` and `Messages`. In it, staff can:
|
||||
|
||||
- see what they hold and raise a request for garments
|
||||
- send messages about their own requests, report damage and raise a dispute
|
||||
- join, leave or accept a waitlist place, and answer a kit check when one is open
|
||||
- change their own password
|
||||
|
||||
Two extra views come from the register, not from a role. If someone is named as another person's manager, they also see approvals. If someone is marked `On the ward desk`, they see the delivery round for their ward.
|
||||
|
||||
## What is written
|
||||
|
||||
| Record | Change | Undo |
|
||||
|---|---|---|
|
||||
| User role | `Admin` or `Issuer`, set under `Settings › People & sign-in` | Set it back, as long as one active Admin remains |
|
||||
| Staff activation code | Generated on the person's record, stamped with the date | `Cancel the code`; it expires after 14 days anyway |
|
||||
| Staff account | Created when the code is used | `Remove access` on the record, which ends its sign-ins |
|
||||
|
||||
If a staff member is deactivated on the register, they lose the staff app at once. When they try to sign in they are told `You're no longer on the register at this facility. Ask the linen room.`
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: ThreadCount in one page
|
||||
section: start
|
||||
order: 1
|
||||
summary: What ThreadCount records, the screens in the menu, the search and scan bar, who signs in, and where to find each first-month task.
|
||||
role: Anyone
|
||||
keywords: overview, introduction, menu, screens, today, counter, stock, orders, people, search, scan, what is threadcount, getting started, help, manual, docs
|
||||
---
|
||||
|
||||
## What it records
|
||||
|
||||
ThreadCount records uniform stock for one facility and keeps three things in step.
|
||||
|
||||
- **Who holds what.** Every garment issued, returned, swapped or handed in is written against a person on the staff register, so each person's holding is always current.
|
||||
- **The shelf, by size.** Each garment in the catalogue has sizes, and each size has its own on-hand figure, reorder level and supplier code. Issues take stock off the shelf. Deliveries and stock counts put it back or correct it.
|
||||
- **What to order.** Sizes at or below their reorder level are gathered on `Orders` into one panel per supplier, raised as orders, and received against when the delivery arrives.
|
||||
|
||||
All three come from the same records. A garment issued at the counter changes the person's holding and the shelf figure. If the size drops to its reorder level, it appears under `To order`.
|
||||
|
||||
## The menu
|
||||
|
||||
The menu down the left side lists the screens in this order.
|
||||
|
||||
| Screen | What it is for |
|
||||
|---|---|
|
||||
| `Today` | The queue: the setup checklist, bags to call people about, the delivery round, approved requests to pick, deliveries due and counts due, with the month-end steps beside it. |
|
||||
| `Counter` | Find the person first, then `Issue`, `Return`, `Hand in` or `Swap a size`. |
|
||||
| `Stock` | Three tabs: `On hand`, `Count` and `Locations`. Each garment has its own page. |
|
||||
| `Orders` | `To order` by supplier, `On the way`, and the ledger of all orders. |
|
||||
| `People` | The staff register and each person's record, with the tabs `Uniform`, `Requests`, `History` and `Details & access`. |
|
||||
| `Reports` | Three tabs, `Spend`, `Stock` and `People`, under the month-end steps. |
|
||||
| `Settings` | Facility, Issuing rules, Catalogue & suppliers, Places & cost centres, People & sign-in, Data & audit log, and Plan. |
|
||||
|
||||
Some screens are not on the menu. `Delivery rounds` lights `Today`. The full request queue is opened with the `Requests` button on `People`, and lights `People`. The audit log is at the foot of `Settings › Data & audit log`. Your name and role are at the foot of the menu, with `Sign out`.
|
||||
|
||||
On a narrow screen the bar along the bottom holds `Today`, `Counter`, `Stock` and `More`. `More` holds Orders, People, Requests, Delivery rounds, Reports, Settings, Help and Counter app. A `SCAN` button opens the camera.
|
||||
|
||||
## Search and scan
|
||||
|
||||
The bar across the top reads `Search or scan: a person, a garment, an order`. Press `/`, or Ctrl+K (⌘K on a Mac), to open it from anywhere except a field or a dialog.
|
||||
|
||||
- **A person.** Type a name or staff number. Enter opens them at the counter, and Shift+Enter opens their record.
|
||||
- **A garment.** Type a name or SKU to open its page on `Stock`, or type its barcode and press Enter.
|
||||
- **An order.** Type the order code, the supplier's reference, the invoice number or the supplier.
|
||||
|
||||
A barcode scanner works without opening the bar. Scanning a staff number opens that person at the counter. Scanning a garment adds it to the pickup when the counter has a person open, counts it on `Stock › Count`, and otherwise opens the garment's page.
|
||||
|
||||
## Who signs in
|
||||
|
||||
The people who run the linen room sign in as users, and each user has one of two roles.
|
||||
|
||||
- **Admin** sets the facility up and makes the changes that affect everyone: the catalogue, reorder levels, the staff register, users, and raising the `To order` list with suppliers.
|
||||
- **Issuer** works the counter: issues, returns, requests, stock counts and receiving deliveries.
|
||||
|
||||
The person who creates the facility is its first Admin. Staff who wear the uniform are not users. They sign in to the staff app with a separate account that shows their own record and the requests they are part of. [The two roles](/docs/start/the-two-roles) sets out what each can do.
|
||||
|
||||
## Where the manual lives
|
||||
|
||||
The same pages appear in three places.
|
||||
|
||||
- On the website, under `/docs`.
|
||||
- In the app, under `Help`. Every screen has a `?` beside its title that opens the page about that screen. On a phone, `Help` is also in the `More` sheet.
|
||||
- In the Community edition's source repository, `pricehq/threadcount-community`, in the `docs/manual` folder.
|
||||
|
||||
## How do I…
|
||||
|
||||
| Task | Page |
|
||||
|---|---|
|
||||
| Load the staff register and catalogue from a spreadsheet | [CSV templates](/docs/reference/csv-templates) |
|
||||
| Issue a garment at the counter | [Issue a garment](/docs/counter/issue-a-garment) |
|
||||
| Set the level at which a size is reordered | [Reorder levels](/docs/stock/reorder-levels) |
|
||||
| Count the shelf | [Stocktakes](/docs/stock/stocktakes) |
|
||||
| Order from a supplier | [Your first order](/docs/start/your-first-order) |
|
||||
| Book in a delivery that arrived short | [Receiving and back orders](/docs/stock/receiving-and-back-orders) |
|
||||
| Give a colleague a login | [Users](/docs/account/users) |
|
||||
| Get staff onto the staff app | [Staff app](/docs/apps/staff-app) |
|
||||
| Close off the month for finance | [Month-end pack](/docs/reports/month-end-pack) |
|
||||
| Take a backup of everything | [Export and backup](/docs/account/export-and-backup) |
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: Your first order
|
||||
section: start
|
||||
order: 4
|
||||
summary: From the To order list on Orders to a delivery on the shelf, including what happens when it arrives short.
|
||||
screen: Orders
|
||||
role: Admin
|
||||
keywords: order, ordering, purchase order, supplier, reorder, raise, to order, order list, order and email, on the way, csv, email supplier, receive, delivery, back order, invoice
|
||||
---
|
||||
|
||||
## Before you start
|
||||
|
||||
The `To order` list depends on two things you set up once.
|
||||
|
||||
- **Reorder levels.** A size appears on the list when its on-hand figure is at or below its level. The same sizes show under `At reorder` on `Stock › On hand`. See [Reorder levels](/docs/stock/reorder-levels).
|
||||
- **Suppliers** under `Settings › Catalogue & suppliers`: `Account no.`, `Order email` and `Lead time (days)`. Each garment names its supplier. See [Suppliers](/docs/stock/suppliers).
|
||||
|
||||
Enter each size's supplier code in the `Ordering` panel on the garment's page. A line with no code shows `no code`, which links to that garment.
|
||||
|
||||
## To order
|
||||
|
||||
On `Orders`, an Admin sees `To order`, with one panel per supplier in A to Z order. Each heading gives the lead time and order email, or `no email on file`. Issuers see `Recent orders` instead.
|
||||
|
||||
Each line is a size at or below its reorder level. The table shows `Code`, `Garment`, `On hand`, `Reorder`, `On order`, `Per week`, `Order` and `Cost`, with a button at the end of each line to remove it. The suggested quantity is twice the reorder level, less what is on hand and what is already on order, and never below 0. A line marked `runs out before this arrives` will run out before a delivery ordered today would arrive.
|
||||
|
||||
- Change any quantity with the stepper, or remove a line with `×`.
|
||||
- `Add a line` adds any garment and size.
|
||||
- If you have already placed the order on the supplier's website, type their order number into `Supplier order no.`. It is optional.
|
||||
- `Sheet` prints the panel as it stands, before anything is raised.
|
||||
|
||||
The supplier's draft orders are listed under the table, each tagged `staff` for a person's order or `draft` for a stock draft, with its own `Supplier order no.` box. A person's order is never merged into the shelf's order.
|
||||
|
||||
## Order and email
|
||||
|
||||
Press `Order and email`. If the supplier has no order email, the button reads `Order` instead.
|
||||
|
||||
1. **The stock lines become one order** marked `Ordered`, with the supplier's order number as its reference. Lines left at zero are dropped.
|
||||
2. **Each draft is raised with its lines unchanged** and marked `Ordered`.
|
||||
3. **Each raised order is emailed** to the supplier, when the button said `Order and email`.
|
||||
4. **The panel lists the raised orders**, with a count such as `1 order raised` beside the supplier name, each with `Print`, `CSV` and `Email`. Press `Done` to close it.
|
||||
|
||||
`Print` opens the A4 order sheet with the supplier's product codes. `CSV` downloads Supplier code, Description, Size, Qty and Unit cost. `Email` sends it again. An email is refused if the supplier has no email address, if email is not set up on the server, or if the order is a draft or cancelled.
|
||||
|
||||
## What is written
|
||||
|
||||
| Record | Change | Undo |
|
||||
|---|---|---|
|
||||
| Order | One new order for stock, `Ordered`, with a code like `ORD-2026-0001` and an expected date the supplier's lead time away, or 14 days if none is set | An Admin can `Cancel order` while it is Draft, Ordered, Shipped or Back Order |
|
||||
| Draft order | Status changed to `Ordered` | Cancel, as above |
|
||||
| Order | The time it was emailed or printed | None |
|
||||
|
||||
## Receive the delivery
|
||||
|
||||
Raised orders move to `On the way`, overdue ones first. When the boxes arrive, press `Receive` there, or open the order and press `Receive delivery`. Orders overdue or due within 2 days also appear under `Receive` on `Today`. An Admin can choose `Mark shipped` from the order's menu, though it is not required.
|
||||
|
||||
1. **Enter the invoice number and arrival date.** A note and `Photo the invoice` are optional.
|
||||
2. **Enter what arrived on each line.** Each line starts at the quantity still outstanding. `Scan items off the box (camera)` adds one for each scan.
|
||||
3. **Choose the destination.** `Shelf` puts the garments into stock. On an order for a staff member, `Pickup` puts them on the call list instead.
|
||||
4. **Check the cost.** If the invoiced cost is not the catalogue cost, choose `Keep`, or an Admin can choose `Update catalogue cost`.
|
||||
5. **Press `Receive`.**
|
||||
|
||||
The server refuses a line where more arrived than was outstanding, and refuses a delivery where nothing arrived.
|
||||
|
||||
## Back orders
|
||||
|
||||
Anything that did not arrive goes on a back order. The original order is marked `Received`. A new order with status `Back Order` is created for the shortfall. It keeps the same supplier reference and has the note `Back order — short on` followed by the original order's code. The original order links to it under `Back order`, and the new order's heading reads `back order of` and the original code.
|
||||
|
||||
When the rest arrives, receive the back order the same way. A received delivery cannot be reversed, so an Admin corrects the shelf with `Adjust quantity` instead. Every order, drafts included, is on the ledger at `Open the ledger`. There is more detail on [Receiving and back orders](/docs/stock/receiving-and-back-orders) and [The To order list](/docs/stock/order-list).
|
||||
Reference in New Issue
Block a user