(01) — Case study

FlowPress

A QR upload path for a computer shop's printing queue—built, deployed, and then reshaped by what people actually did with it.

Solo buildRole
2025—2026Years
Running in real operationsStatus
Next.js · PHP · MySQL · DockerStack
01FlowPress

FlowPress — project cover

(02) — The problem

Printing in a computer shop is a queue of people handing over flash drives, then waiting while someone opens each file on the one machine wired to the printer.

Constraint

The shop’s internet is unreliable, so the critical file path could not depend entirely on the cloud.

Users

Walk-in customers on their own phones, and one staff member watching a queue during a rush. Neither installs anything.

(03) — How the architecture changed

The first version put the upload page on the public internet and the backend in my homelab. Connectivity and adoption problems pushed the file path back inside the shop.

V1 — deployedPublic route
UploadPublic page · any network
RouteCloudflare Tunnel
BackendHomelab · Docker
SyncFiles land on the shop PC

This worked and handled more than 100 uploads, but every print depended on the shop connection, the tunnel and a server outside the building.

V2 — in progressShop-local route
ConnectMikroTik hotspot · captive portal
UploadOn-site upload server · LAN
QueueJob state on the shop machine
PrintStaff releases the job

The new default keeps the critical path on-site. The public route remains available as a fallback instead of becoming another dependency.

(04) — Screens

(05) — What happened when people used it

Building it was the easy half. Changing how people already did the task was the actual problem, and I only partly solved it.

100+ uploads

Files passed through the workflow during early use.

Staff went around it

They preferred opening the shared folder directly over the admin queue I built.

Messenger stayed

Some customers kept sending files the way they always had.

Fallbacks stayed

Every alternative path had to remain available.

(06) — Where it stands

Working now

The upload page, file handoff and print path run at the shop.

Tested, not adopted

The captive-portal upload path and the custom admin queue were tested, but staff chose not to use them.

Still planned

A shop-local default path, clearer job states and better monitoring.

Limitations

The workflow still has to coexist with Messenger, USB drives and manual file handling.

What I would do differently

Watch staff work for a week before designing the queue.