Back to projects
Apr 10, 2026 • Project

HeroLink: Industrial IoT Hub

A C# desktop application automating parcel dimensioning and weighing via laser sensors and hardware integration.

C#.NET 10AvaloniaUIIoTHardware
Context
In the warehouse, parcel dimensions and weight were typed in by hand, with errors that cost money in shipping fees.
My role
Built the C# desktop app: sensor control, UI, ERP integration, automated build and release.
Outcome
In production: one scale and three lasers driven at once, measurements sent to the ERP as soon as the barcode is scanned.
HeroLink UI Concept

Illustration generated by AI to represent the wireframe of the interface, respecting the actual design

The need

In e-commerce logistics, manual entry of parcel dimensions and weight is a major bottleneck. It is time-consuming and prone to typos, which ultimately leads to costly shipping surcharges.

The goal of HeroLink was to create a “Plug-and-Play” station. The application orchestrates 4 peripherals simultaneously (1 scale + 3 lasers) to capture parcel data as soon as a barcode is scanned, then synchronizes the information with an ERP via an API.

Technical choices

Why .NET 10 & Avalonia UI?

The Hardware Stack

Everything relies on System.IO.Ports for serial communication (COM):

The problem: unstable serial ports

During testing, the connection with the scale was inconsistent. After about ten minutes of inactivity, the port would stop responding. This occasionally blocked the main thread, causing the user interface to freeze.

The fix: rethinking the threading

To resolve this, I overhauled the communication architecture:

The API

I used Refit to transform the API into a strongly-typed C# interface:

What I learned

Retrospective

The project is currently in production. If I were to evolve it further, I would isolate the hardware logic into a separate Windows Service (Background Worker). The interface would then act as a light client communicating via SignalR, making data capture entirely independent of the UI state.