All projects
Yandi

Yandi

archived

A Raspberry Pi print-queue kiosk for shared rooms — Qt/QML dashboard on an attached screen, with job submission over Bluetooth, Wi-Fi, and Ethernet.

qtqmlcppraspberry-piembeddedprintingbluetoothnfc

What it does

Yandi is a local print-queue kiosk for multi-workstation rooms — a Raspberry Pi with an attached display acts as the hub, showing a live dashboard of incoming and active print jobs while accepting submissions from nearby machines over several transport links.

  • Kiosk dashboard in Qt/QML — quick view, print history, logs, settings, and on-screen queue visibility
  • Multi-path job submission — Bluetooth pairing, TCP over Wi-Fi/Ethernet, and NFC share flows
  • PDF handling and printing — Poppler-based preview, printer discovery, driver download, and receipt decoration
  • Room-scale connectivity — TCP server for LAN clients, Bluetooth interface for wireless enqueue, Flask helper for Wi-Fi provisioning on the Pi

Why I built it

A contract engagement to replace ad-hoc USB printing in a busy computer lab — the client needed a single visible queue, reliable local submission from dozens of machines, and a dashboard staff could glance at without logging into a server.

How it works

  • Hardware: Raspberry Pi with attached touchscreen, running as an always-on local print hub
  • UI: Qt Quick / QML — splash, quick-view dashboard, print history, logs, PDF viewer, and Bluetooth/NFC configuration popups
  • Device layer: C++ PrinterInterface, BluetoothInterface, TcpServer, NfcInterface, and PopplerDoc wired into QML
  • Supporting services: Python Controller.py (Flask) for Wi-Fi scan/connect; JS modules for receipt processing and stats loading
  • Deployment: self-contained Pi appliance — local queue, on-screen status, and multi-link submission from room workstations

What I learned

A room-scale print hub is as much a UX problem as a networking one — the attached screen has to make queue state obvious at a distance, and submission has to work over whichever link a given machine actually has (Bluetooth vs Wi-Fi vs cable). Keeping everything local on the Pi avoids cloud dependency but makes concurrent job handling, driver management, and recovery worth designing upfront.