ThreadCount Community edition

Uniform stock management for healthcare linen rooms. Licensed under the GNU AGPL v3.
This commit is contained in:
ThreadCount
2026-09-13 08:45:19 +10:00
commit 1bc2de655a
505 changed files with 56223 additions and 0 deletions
+129
View File
@@ -0,0 +1,129 @@
<!doctype html>
<html lang="en-AU">
<head>
<meta charset="utf-8">
<title>ThreadCount — one page</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo:wght@400;600;700;800&display=swap">
<style>
/* A4, printed. Sized to fit one page with room for a printer's margins, because the whole point
of a one-pager is that it is one page — a second sheet is a document nobody reads. */
@page { size: A4; margin: 0; }
:root {
--ink: #201e1d;
--paper: #f3f2f2;
--accent: #ec3013;
--accent-700: #c4260f;
--grey: #6b6764;
--rule: #d6d3d1;
}
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; background: #fff; }
body {
font-family: Archivo, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
color: var(--ink);
width: 210mm; min-height: 297mm;
padding: 12mm 15mm 10mm;
-webkit-print-color-adjust: exact; print-color-adjust: exact;
}
h1, h2, h3 { margin: 0; letter-spacing: -0.02em; }
p { margin: 0; }
.top { display: flex; align-items: center; justify-content: space-between; border-bottom: 2px solid var(--ink); padding-bottom: 7mm; }
.mark { display: flex; align-items: center; gap: 3mm; }
.mark i { width: 5mm; height: 5mm; background: var(--accent); display: block; }
.mark span { font-weight: 800; font-size: 15pt; letter-spacing: -0.01em; }
.free { border: 2px solid var(--ink); padding: 2mm 3mm; font-size: 7.5pt; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.lead { margin-top: 6mm; }
.kicker { font-size: 7.5pt; font-weight: 800; letter-spacing: 0.15em; text-transform: uppercase; color: var(--accent-700); }
h1 { font-size: 27pt; line-height: 1.02; font-weight: 800; margin-top: 3mm; max-width: 15cm; }
.lede { font-size: 10.5pt; line-height: 1.5; margin-top: 4mm; max-width: 15.5cm; color: #34302e; }
.rule { width: 22mm; height: 1.6mm; background: var(--accent); margin-top: 5mm; }
.cols { display: grid; grid-template-columns: 1fr 1fr; column-gap: 10mm; margin-top: 6mm; }
.sec { font-size: 7.5pt; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; border-bottom: 2px solid var(--ink); padding-bottom: 2mm; margin-bottom: 3mm; }
.item { padding: 2.6mm 0; border-bottom: 1px solid var(--rule); }
.item b { display: block; font-size: 10pt; font-weight: 800; }
.item span { display: block; font-size: 8.6pt; line-height: 1.42; color: #494340; margin-top: 0.8mm; }
.band { margin-top: 6mm; background: var(--ink); color: #fff; padding: 5mm 7mm; }
.band .sec { border-bottom-color: rgba(255,255,255,.35); color: #fff; }
.band .q { font-size: 10.5pt; line-height: 1.5; max-width: 16cm; }
.band .q b { color: #fff; }
.foot { margin-top: 6mm; display: flex; justify-content: space-between; align-items: flex-end; border-top: 2px solid var(--ink); padding-top: 5mm; gap: 8mm; }
.foot .facts { font-size: 8.4pt; line-height: 1.5; color: var(--grey); max-width: 10.5cm; }
.foot .cta { text-align: right; }
.foot .cta b { display: block; font-size: 12pt; font-weight: 800; }
.foot .cta span { display: block; font-size: 9pt; color: var(--grey); margin-top: 1mm; }
.url { color: var(--accent-700); font-weight: 800; }
</style>
</head>
<body>
<div class="top">
<div class="mark"><i></i><span>ThreadCount</span></div>
<div class="free">Free to run</div>
</div>
<div class="lead">
<div class="kicker">Uniform management for hospitals, aged care and clinics</div>
<h1>Every garment out the door, accounted for.</h1>
<p class="lede">
ThreadCount follows a garment from the shelf, to the person wearing it, to the supplier order
that puts another one back. It was built by a uniform coordinator for their own linen room,
and the software is free — run it yourself for nothing, or have it hosted from $1,290 a year
with no per-user charge, and nobody will ring you.
</p>
<div class="rule"></div>
</div>
<div class="cols">
<div>
<div class="sec">What it does</div>
<div class="item"><b>Stock by size, not by product</b><span>On-hand for every size, updated as you issue, flagged before a size runs out.</span></div>
<div class="item"><b>Issue to a person</b><span>Entitlement balance on screen, manager approval recorded when someone goes over, credit slip for the balance.</span></div>
<div class="item"><b>Scan with a phone</b><span>Reads the supplier barcode already on the garment, from the Android app or Chrome. No scanner hardware to buy.</span></div>
<div class="item"><b>Count a shelf at a time</b><span>Expected figure in hand as you count, and a reason captured for any real variance.</span></div>
<div class="item"><b>Orders that build themselves</b><span>Every issue feeds a draft supplier order. Shorts split to a back order automatically.</span></div>
</div>
<div>
<div class="sec">What it answers</div>
<div class="item"><b>“How many size M do we have?”</b><span>Per size, per location, right now.</span></div>
<div class="item"><b>“Who has that garment?”</b><span>Issued to a named person, with what they still hold.</span></div>
<div class="item"><b>“Why did Willow Ward double?”</b><span>Spend attributed to the ward that incurred it, drillable to the issues behind it.</span></div>
<div class="item"><b>“What do we owe them?”</b><span>Entitlement, what has been taken, and the balance outstanding.</span></div>
<div class="item"><b>“Where did it go?”</b><span>Leavers still holding stock, size changes, damage written off as damage.</span></div>
</div>
</div>
<div class="band">
<div class="sec">For finance</div>
<p class="q">
Uniform spend attributes to the cost centre on the staff record and values at unit cost, so
the month-end job is an export rather than an investigation. The journal comes out as one
debit line per cost centre, as CSV, for the month you choose — and every line drills back to
the issues behind it when a ward manager queries their number.
</p>
</div>
<div class="foot">
<div class="facts">
Australian hosted and kept separate per facility; only the accounts you invite can see your
rooms records. Works in any browser, with an Android app for the ward. Every report and
register exports as CSV. One backup file takes the whole facility: nothing to cancel,
nothing held back.
<br><br>
Worth sending to your information security team early: <span class="url">threadcount.tech/security</span>
</div>
<div class="cta">
<b>Try it without signing up</b>
<span class="url">threadcount.tech/demo</span>
<span>hello@threadcount.tech</span>
</div>
</div>
</body>
</html>