Order up! Our new household receipt printer

Now live as a sort of fax machine.

Foreword — Bill

So it’s Emily’s birthday.

I wanted to build her something; and I had noticed that she is someone that is always building these cool and creative workflows to organize her tasking.

Looking at her sticky note covered corkboard, I had the idea it’d be fun to print Jira tickets process them like a burger joint counter, complete with the “spike.”

When I labbed on it a bit, it turned out to be pretty easy to integrate the receipt printer into a homelab-rolled webpage. A little pihole dns registration, Claude-assisted React prompting with some burger-focus and done!

orderup.lan

orderup.lan

Order Up!

Emily's task kitchen

Checking…
Next #000

Checking whether the kitchen's open…

The actual pad, wired to the actual printer. Type an order, hit Order up!, and paper comes out of a machine in our kitchen — usually inside ten seconds. Text goes through the port of receipt.py, so the preview is the wrap the paper gets; a picture is dithered here in the browser, so the preview is the bitmap the head burns. There are caps: a few tickets each per day, a few dozen across the site. Tidy up is missing because it spends my Anthropic key.
A MUNBYN thermal receipt printer on a desk, mid-print, with a ticket headed ORDER #034 / PHOTO emerging from it carrying a dithered black-and-white photograph. To the right, a metal spike holds a thick stack of finished tickets.
The other end of that button. 80mm thermal, auto-cutter, on WiFi — it listens on TCP 9100 and prints whatever bytes arrive, so everything about how a ticket looks lives in the app. On the right, the spike.
A printed receipt held up in front of a curious dog. The ticket reads ORDER #021 / TASKS and contains a large ASCII-art drawing made of punctuation characters.
Two ways to print a picture. This one the font ROM can spell; the one above is one the dots can burn — the ASCII limit belongs to the font, not the hardware.