RFID Tags & Readers¶
TimeKeeper pairs RFID tags with team members, then signs them in and out with a tap. Each member can hold multiple tags (several cards for one person).
Reader types¶
| Type | How it works | Platforms |
|---|---|---|
| PCSC smart-card reader | Native driver talks to the reader directly (APDU Get-UID); emits colon-hex UIDs like DE:AD:BE:EF:01:23. Internal 3 s debounce on identical UIDs. |
Desktop only (web falls back to keyboard-wedge) |
| Keyboard (wedge) scanner | Acts as a keyboard: scans "type" the UID then Enter. The app's RfidScanBuffer captures them globally. |
All platforms — including web |
Both are started together when the kiosk is active; they don't conflict.
How a scan matches a member¶
_findMember runs entirely on the client against the replicated tag map, so
taps are instant. Matching is deliberately fuzzy:
- Separators (
:, space,-, none) are normalized away, - both byte orders are tried,
- big- and little-endian decimal interpretations are tried — keyboard readers tend to emit little-endian decimal, PCSC gives colon hex.
So one card works whichever way the reader formats it.
Assigning tags¶
- Team → edit a member → RFID Tags: an Add RFID Tag field (with a scan button on desktop that captures a live card directly), plus remove buttons on existing tags.
- At the kiosk: an admin scanning an unknown card gets the Unrecognized toast → the Link Card dialog → search the member → Card Linked.
- At import: the team-member CSV can seed tags (see Import & Export).
Unrecognized cards¶
A card with no matching member shows Unrecognized card "value", contact admin. — an admin can link or reassign it on the spot. If "the wrong card" keeps happening, remember tag matching is fuzzy: a card scanned for someone else is usually just not linked.
Scan debounce¶
- Device setting — Scan Debounce (minutes), default 5; the kiosk warns "Please wait X before scanning again." for the same card within it.
- The PCSC path has its own hardcoded 3 s same-UID cooldown.
- The keyboard buffer clears after 500 ms of no input, so a slow wedge scan still completes — books don't trigger it, and consecutive fast scans don't merge.
Troubleshooting¶
| Symptom | Check |
|---|---|
| Scan does nothing | Device Location set? rfidTags synced (open another device)? Card actually linked in Team? |
| PIN typed as chars appears as a card | Expected — the kiosk suppresses the scanner while the PIN dialog is open; if you see this elsewhere the wedge is interpreting live input. |
| PCSC not active on web | By design: PCSC is desktop-only; use a wedge scanner. |
| Same card works then fails | Debounce cooldown — wait out the device scan-debounce window, or the reader's own. |