The Scanner: Five Modes for Five Jobs
Receiving, Lookup, Warehouse, Testing, Outbound — and why the camera fallback exists for Safari.
The scanner is the single most-used surface in a warehouse that runs on ReVend OS. It's also the surface that has to work on the worst hardware — a five-year-old Android tablet, a borrowed iPad, a USB wedge scanner plugged into a desktop in the receiving bay. So it has to be flexible: keyboard input, camera capture, USB wedge, all working from the same component.
The five modes
Receiving — scan an inbound asset's serial or label, and the scanner looks it up against the open inbound order. Found? It's checked in. Not found? It surfaces a "create asset" form pre-filled with the inbound order context. This is the mode that runs all day at the dock.
Lookup — scan anything: an asset UID, a pallet barcode, a rack-position label. The scanner returns whatever the system knows about that thing. Used for "what is this and where should it be?" — the question that gets asked a hundred times a day in any warehouse.
Warehouse — scan a source position, scan a target position, the assets move. Used for rack-to-rack moves, pallet-to-rack moves, and warehouse choreography where the scan itself becomes the handoff.
Testing — scan an asset's serial, jump to the testing detail page for that asset. Used by testers to walk a queue without going through the list view every time.
Outbound — scan an asset against a pick list. Confirms the right asset is going to the right outbound order, prevents the "we shipped the wrong serial" call from a buyer.
Camera fallback
Camera capture depends on browser permissions, device cameras, and WebRTC support. Sometimes the browser refuses camera access. Sometimes it grants access but the video stream stalls. Sometimes the browser thinks the page is in a tab the user is not looking at, even though they very obviously are.
The camera fallback is for those days. When the scanner detects the browser can't (or won't) open the camera, it switches to a keyboard input mode with an explicit "wedge hint" — meaning the page expects a USB wedge scanner or manual typing, and the cursor stays focused on the input no matter where the user clicks. The fallback also surfaces a two-color compliance UI so the operator knows immediately whether the scan landed in "ready" or "needs review" — which matters when the camera-less mode is used at the dock and the operator doesn't have time to read three lines of status text.
Code128 on rack labels
Rack-position labels print as Code128, the linear barcode standard that USB wedge scanners and phone cameras both decode reliably. The print template is built into the warehouse settings — print a label sheet, stick the labels on the racks, and any scanner can read them. No proprietary symbology, no hardware lock-in, no surprise when somebody changes the label printer in 2027 and the new one doesn't speak the old format.