Build Log

Footwear Shop Management System

Role
Full-Stack Desktop Development & System Architecture
Timeline
8 Weeks
Key Technologies
Electron / React 19 / TypeScript / Vite / SQLite (better-sqlite3) / Node.js / TSPL / ESC/POS / Koffi (FFI) / SerialPort / Electron-builder

Many footwear shops still rely on decade-old Windows machines and thermal printers that newer software no longer supports. Instead of asking businesses to replace their hardware, I built an offline-first desktop platform that works across generations—handling billing, inventory, barcode labels and receipts from a single codebase.

The Challenge

The Bottleneck

Shops need more than a cash register. They need billing, inventory with size variants, returns and exchanges, supplier purchases, staff management, and sales analytics — all working offline. But the hardest constraint was hardware: label printers speak raw TSPL commands, receipt printers speak ESC/POS, and a large share of retail machines still run 32-bit Windows 7. One codebase had to serve all of it.

The Solution

The Reality

I've built a full desktop POS system on Electron with a React UI, backed by a local SQLite database. I've engineered a dual-build architecture — a modern x64 build and a legacy ia32 build — that share a single source tree, and a hardware printing engine that translates structured print jobs into TSPL or ESC/POS byte streams through one unified IPC channel.

"I haven't just build a billing app, built a hardware bridge that turns one offline source of truth into labels, receipts, and reports on printers of every era."

Under the Hood

Technical Execution

A breakdown of the core systems engineered to deliver performance and reliability.

01

Dual-Build Architecture

  • Shared source tree between latest/ (Electron 37, ESM) and legacy/ (Electron 22, CommonJS) via symlinks.
  • TypeScript NodeNext resolution compiles the same files to ESM or CJS based on each package's module type.
  • A postinstall script recreates the tree on Windows with directory junctions and patches node-gyp for VS 2026 toolchains.
02

Hardware Printing Engine

  • TSPL2 command builder for barcode shoe labels, driven through raw Win32 spooler calls via koffi FFI.
  • ESC/POS renderer that converts invoice models into receipt byte streams for 80mm printers.
  • One IPC print channel keeps the React UI printer-agnostic — a structured job in, the correct driver out.
03

Data Integrity & Type-Safe Scale

  • Strict TypeScript across the entire codebase, shared models between main process and UI.
  • SQLite schema modelling products separately from size/color variants — the correct model for shoe stock.
  • Dedicated migration scripts for data-restructure releases, plus manual and login-triggered backup & restore.

Wanna test out?

reach out to me.. →

The Outcome.

The shop went from paper ledgers to a live desktop platform handling billing, barcode labels, returns, supplier purchases, and daily analytics — with one installer that runs on both Windows 11 and Windows 7 machines.

  • Offline-Capable POS
  • Two Printer Families Supported
  • Win7 → Win11 Coverage
  • Bulk Import & Analytics

What I learned

This project taught me that good engineering isn't about using the newest technology.

It's about respecting the constraints people already live with.

The best solution isn't always the most modern one—it's the one people can adopt tomorrow.