Case study

StoreDesk

Production-grade, 5-module local-first retail command center & POS sync ecosystem for convenience stores.

  • Electron
  • React
  • TypeScript
  • Node.js
  • Flutter
  • MongoDB
  • Next.js
  • Google Cloud
The core problem

What needed solving

Convenience store and gas station operators require real-time POS visibility, catalog management, vendor cost analysis, and automated sales reporting on the store floor without risking store shutdown during internet outages.

The solution

What I built

StoreDesk guarantees continuous store operations through 5 specialized modules: 1) StoreDesk Worker (Local Edge Node communicating with Verifone Commander via NAXML), 2) StoreDesk Desktop UI (Electron back-office command center), 3) StoreDesk Cloud Hub (GCP WebSocket Relay & Setup Key Server), 4) StoreDesk Web (Next.js 15 multi-store cloud dashboard), and 5) StoreDesk Mobile (Android Flutter barcode scanner with sub-100ms WebSocket lookups).

A 5-module local-first POS ecosystem for convenience stores. Connects directly to live Verifone Commander registers via NAXML for PLU seeding, vendor cost analysis, and automated reporting without ISP dependencies.

Integration

How it fits together

StoreDesk is five Git submodules that meet on two paths. Inside the store, StoreDesk Worker pulls the PLU catalog from the Verifone Commander over NAXML into a local MongoDB, and the Electron Desktop UI reads from it directly. Outside the store, the Cloud Hub on Google Cloud relays WebSocket traffic, so the Flutter scanner and the Next.js dashboard can reach the Worker without the store network accepting inbound connections. Devices are paired with Setup Keys issued from StoreDesk Web.

StoreDesk architecture diagram
System architecture

The flow, step by step

  1. Launch StoreDesk Desktop UI (Electron) on the back-office PC and activate using a secure Setup Key generated from StoreDesk Web.
  2. StoreDesk Worker automatically seeds 10,000+ PLUs via direct NAXML HTTP requests from the Verifone Commander register into local MongoDB.
  3. Use StoreDesk Mobile (Android Flutter app) to scan floor barcodes, instantly fetching live cost, margin, and retail prices over WebSocket relays.
  4. Review profit margins, vendor costs, and automated Google Sheets sales reporting from StoreDesk Web.
Problems along the way

What got hard, and what I did about it

The internet could not be a dependency

The problem

A cloud-first design would stop a store the moment its ISP dropped, which is exactly when a register still has to ring up sales.

What I did

Made the Worker local-first on the store edge network, with MongoDB persisted to disk. The cloud only adds reach, it never gates the store floor.

15 MB XML dumps on every sync

The problem

Full NAXML catalog exports were far too heavy to push to the cloud repeatedly over store connections.

What I did

Replaced full uploads with MD5 delta-hash synchronization, so only records that actually changed leave the store.

Price checks had to feel instant

The problem

Staff scanning a shelf will not wait on a slow round trip for cost and margin.

What I did

Routed scanner lookups over a persistent WebSocket relay to the Worker, bringing lookups under 100 ms.

Takeaways

What I learned

  • Designing for the failure mode first (going offline) shaped every other architectural decision.
  • Integrating with point-of-sale hardware means reading vendor protocol specs closely and writing defensive parsers for real-world data.
  • Shipping desktop, mobile, and web alone only works with strict module boundaries and repeatable release builds (.exe and .apk).
Outcome

Where it stands today

Architected across 5 Git submodules: StoreDesk Worker, StoreDesk Desktop UI, StoreDesk Cloud Hub, StoreDesk Web, and StoreDesk Mobile.
Eliminates downtime risk by running StoreDesk Worker local-first on the store edge network with Verifone Commander.
Reduces cloud data transfer payloads from ~15MB XML dumps to lightweight MD5 delta-hash synchronization.
Delivers compiled Windows .exe installers for StoreDesk Desktop UI and Android .apk binaries for StoreDesk Mobile alongside StoreDesk Web.

Milestones

  • StoreDesk Worker (NAXML Integration)

    Bulk XML PLU auto-seeding (pageSize=9999) with local MongoDB disk resilience.

    Shipped
  • StoreDesk Cloud Hub (WSS Relay)

    Sub-100ms WebSocket lookup relay connecting StoreDesk Mobile with StoreDesk Worker.

    Shipped
  • StoreDesk Desktop UI & Web Admin

    Back-office Electron control room and Next.js 15 multi-store dashboard.

    Shipped
  • Production Multi-Platform Releases (v0.0.4)

    Windows Desktop .exe installer and Android .apk binaries published on GitHub Releases.

    Shipped

Next up

  • Expand StoreDesk Worker POS connectors to Gilbarco Passport and Wayne Nucleus registers.
  • Integrate AI-driven vendor invoice OCR parsing in StoreDesk Web.
  • Deploy multi-store inventory transfers in StoreDesk Web.