<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gustavo Santos</title>
    <description>The latest articles on DEV Community by Gustavo Santos (@gsantos).</description>
    <link>https://dev.to/gsantos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3808929%2Fa16cc51a-83d4-46f6-91c9-5098b1981e9c.png</url>
      <title>DEV Community: Gustavo Santos</title>
      <link>https://dev.to/gsantos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gsantos"/>
    <language>en</language>
    <item>
      <title>How I integrated a 2014 Wi-Fi Scale with C++ and Qt (The ultimate Offline-First ERP</title>
      <dc:creator>Gustavo Santos</dc:creator>
      <pubDate>Thu, 19 Mar 2026 22:36:25 +0000</pubDate>
      <link>https://dev.to/gsantos/from-paper-to-system-identifying-bottlenecks-in-a-butcher-shop-that-was-never-digital-3524</link>
      <guid>https://dev.to/gsantos/from-paper-to-system-identifying-bottlenecks-in-a-butcher-shop-that-was-never-digital-3524</guid>
      <description>&lt;p&gt;The Context: Digitalizing Chaos&lt;br&gt;
Imagine a business with zero digital footprint. No computers, no legacy software. Just notebooks, paper, and manual calculations.&lt;/p&gt;

&lt;p&gt;The only "tech" available? Old weighing scales from 2014 with a Wi-Fi module that was never turned on.&lt;/p&gt;

&lt;p&gt;The Challenge: Low-Level Integration&lt;br&gt;
Most modern developers are used to fetching JSON from a REST API. My challenge was different: I had to talk to hardware.&lt;/p&gt;

&lt;p&gt;Old Protocols: The scales used an outdated Wi-Fi security standard (WPA-PSK with TKIP). Modern routers hate this. I had to bridge the gap between modern network stability and "legacy" hardware constraints.&lt;/p&gt;

&lt;p&gt;Real-Time Data: I implemented a custom ScaleClient using TCP Sockets to pull weight data in real-time. No room for lag when there’s a line of customers waiting.&lt;/p&gt;

&lt;p&gt;Barcode Magic: I wrote a custom validator for EAN-13 labels to extract weight and price directly from the thermal printer labels (Toledo Prix 5 protocol).&lt;/p&gt;

&lt;p&gt;The Architecture: Built to Never Fail&lt;br&gt;
In a butcher shop, if the internet goes down, the business cannot stop. Period.&lt;/p&gt;

&lt;p&gt;Offline-First: Built with C++ and Qt, using a local SQLite engine with a custom migration system (runMigrations()). Data is safe even if the power cuts.&lt;/p&gt;

&lt;p&gt;Embedded HTTP Server: I didn't want to manage a separate web server. So, I built a native HTTP Server (QTcpServer) inside the ERP.&lt;/p&gt;

&lt;p&gt;Edge Computing: The "cold storage" (backroom) workers use their phones to access the local IP. My C++ backend serves a native Web App directly to them. No cloud, no latency.&lt;/p&gt;

&lt;p&gt;The "Art" of the Dashboard&lt;br&gt;
Since I wanted the system to be ultra-lightweight, I avoided heavy charting libraries. I used QPainter to manually render:&lt;/p&gt;

&lt;p&gt;Real-time Sales Bar Charts.&lt;/p&gt;

&lt;p&gt;Category Pie Charts.&lt;/p&gt;

&lt;p&gt;Inventory Alerts.&lt;/p&gt;

&lt;p&gt;The result? A system that opens in milliseconds and runs on basically any hardware.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;br&gt;
Digital transformation isn't about the newest Javascript framework. It's about observation.&lt;/p&gt;

&lt;p&gt;Understand the manual bottleneck (the paper notebook).&lt;/p&gt;

&lt;p&gt;Connect the physical world (the scale) to the digital world (the DB).&lt;/p&gt;

&lt;p&gt;Build for resilience (Offline-First).&lt;/p&gt;

&lt;p&gt;The project is 80% done, and it’s a beast.&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>qt</category>
      <category>architecture</category>
      <category>automation</category>
    </item>
    <item>
      <title>Hi ??</title>
      <dc:creator>Gustavo Santos</dc:creator>
      <pubDate>Fri, 06 Mar 2026 03:27:24 +0000</pubDate>
      <link>https://dev.to/gsantos/hi--4949</link>
      <guid>https://dev.to/gsantos/hi--4949</guid>
      <description></description>
    </item>
  </channel>
</rss>
