Skip to main content

Printer

The printer flow within Smart Tools Hub lets store staff print item and shelf tags from a handheld device to a Zebra handheld printer. It was built, demoed, and released, but never rolled out to stores.


Overview​

Every shelf front carries a tag showing the price and what belongs in that spot, including the vendor code that tells PICs which vendor an item can be ordered from. Those tags go out of date as things change, particularly when an item's vendor changes.

The printer flow was meant to close that gap on the spot. While a PIC was out on the floor scanning and placing orders, they could print a replacement tag and put it up right there, rather than noting it and handling it later.

Zebra shipped a handheld printer to the office for us to develop and test against.

How It Works​

The flow follows the same shape as the rest of the app - find an item, then act on it:

  • Find the item - by scanning it, or by searching if it won't scan
  • Select a tag - choose which tag to produce for that item
  • Preview - confirm the tag before sending it
  • Print - the tag is sent to the paired printer

A separate setup step pairs the device with its printer and retrieves the token used to talk to it.

Smart Print​

Any page in the app that had a UPC on it offered a smart print action. Pressing it jumped straight to the printer flow with that item's information already loaded, so the user only had to hit print.

Markdowns​

There was a conceptual plan to print markdown barcodes - a reduced price for expiration or similar baked directly into the barcode. This was never built.

Hardware & Connectivity​

The hardware was the hard part. The handhelds in use at the time had no way of connecting to the printer over Bluetooth, so the two had to talk over the local network instead. Getting that working took a significant amount of authentication and network configuration between the device and the printer.

Why It Was Never Adopted​

The flow was finished, demoed working, and handed over with an offer to walk their team through setting it up whenever they were ready. Someone on their side tried to get it working and couldn't quite get there. We offered to help whenever they wanted to go live, and they chose to put it on hold - they weren't ready to take it out to stores, and it wasn't a high enough priority.

Nothing came of it after that. It was never rolled out.

Three Bears Alaska has since moved to new handhelds, so what we built may no longer work at all. It is untested against the current devices, and testing it has not been worth the time or money on their side.

That hardware change does open a door, though: the newer handhelds may be capable of Bluetooth, which the original devices were not.

What's Still in the Codebase​

The printer flow is effectively dead code today, and a fair amount of it could be removed. It has been left in place deliberately, for two reasons.

First, Mike has raised going back to the printer more than once - this time over Bluetooth, with a simpler approach than the networking setup the original required.

Second, and more importantly, a good portion of what exists is Zebra-specific and would be worth keeping regardless. Zebra uses its own markup language for building tags, and the codebase contains a complete tag engine for it. That engine pulls the item's information from the database and places it correctly for each of the possible label types, so a user picks a label, picks an item, and prints.

That engine is the valuable part and should not be deleted. The piece that would need rebuilding is the actual transfer of the Zebra code to the printer.

Isolating just the reusable pieces - pulling them into their own repo, for instance - has been considered, but the printer work has never been consistent enough to justify paying for that cleanup. It is not a big enough problem to spend on.

Known Issues & Limitations​

  • Never adopted - the flow is live but unused, with no real-world usage to learn from
  • Hardware has since changed - it is unclear whether any of it still works against current devices, and it is untested
  • Dead code - printer code remains throughout the codebase and would need careful separation, since the Zebra tag engine is worth keeping and the transport layer is not