Skip to content
Anis ZadriLille, France
Back to projects

Production case study

A barcode scanner that could survive the real world

At Limpidius, I replaced a paid browser scanning SDK with an in-house Angular library for retail teams using ordinary phones in stores and warehouses.

~3,000
scans per day in production
2 threads
camera and decoding kept apart
0
native app installs required
Limpscanner in production

In the field

The library runs in an ordinary browser tab on store phones: no native install, no dedicated hardware. Camera capture stays on the main thread; decoding happens in a worker.

01

The system

The browser captures camera frames on the main thread and transfers them to a Web Worker. WebGL handles preprocessing, while ZBar and region-of-interest detection run through WebAssembly. Sharpness gating rejects poor frames early, and a result is confirmed across multiple frames before it reaches the host application.

02

The bug that mattered

Android worked. iOS did not. Safari exposed camera dimensions in a different orientation from the pixels arriving in the worker, so the scanner was cropping the wrong part of the frame. I traced the display, corrected-frame, and raw-sensor coordinate spaces, then fixed the crop mapping and delayed startup until the host container had real dimensions.

03

Making performance measurable

Once the scanner was live, I built the telemetry path behind it: validated session data moved from the browser to a NestJS service, BigQuery, and Grafana. The resulting dashboard gave the team visibility into success rates, device failures, scan duration, and manual-entry recovery instead of relying on anecdotes.

Outcome

The library replaced the commercial dependency and shipped to production across retail tenants. The work combined performance engineering, device-level debugging, and the judgment to measure whether the system was actually helping users.