The brief
Our client, an exclusive supplier of running shoes and swimming equipment in Ukraine, was looking for a way to maintain smooth customer experiences both online and offline.
However, keeping up to that promise was becoming increasingly difficult. Network instability, power outages, and unpredictable downtime of third-party systems often interrupted cashier workflows. The client needed a reliable solution to keep sales running, specifically, a desktop app for online and offline cashier operations.
Challenge
The main business goal was to unify and modernize cashier operations across all retail locations. The client wanted an MVP solution delivered within three months that would:
- Support over 30 stores nationwide
- Operate both online and offline
- Integrate with the client’s existing loyalty platform (“Loyalno”) and other loyalty systems
- Work independently of the centralized ERP system when offline
- Support bonus programs, promotions, and discount campaigns
- Serve as the foundation for a CRM system by collecting customer data at checkout
- Reduce service time per customer and eliminate costly pricing errors from the old system
On the technical side, WebbyLab had to tackle the following challenges:
- Intuitive UI. We had to design the interface to be simple enough for cashiers to use right away, yet powerful enough to handle order management, payments, and loyalty logic.
- Offline mode. We needed to ensure the app worked smoothly without an internet connection, using a reliable local database, including all processes related to order processing and discount calculations.
- ERP integration and synchronization. Data had to stay consistent between the cash register and ERP, even when connectivity was unstable. That’s why we needed mechanisms for two-way synchronization.
- Fiscal reporting. The system required integration with Checkbox.Kasa.Manager for fiscal receipt generation, shift management, and Z-reporting, which, at the same time, was supposed to create minimal load on the app.
- POS terminal payments. For cashless transactions and stable, near-real-time transaction processing, we had to connect the app to PayLink POS Server.
- Loyalty system integration. The cash register had to communicate with Loyalno in real time to calculate bonuses, apply discounts, and process promotions without errors, even offline.
Solution
Having weighed the requirements and risks, we proposed implementing the cash register system using Electron.js with SQLite for local data storage. The solution encompassed:
Monolithic Architecture and Automated Updates
We built an app on a monolithic architecture with a centralized code repository. This streamlined deployment and maintenance are possible because all system components (from frontend and backend to integrations) are stored in one place. To simplify updates, we implemented an Electron Release Server that automatically checks for new app versions and allows one-click updates directly from the application interface.
The architecture of a retail cashier desktop app.
Stable Communication Between Processes
To ensure stable interaction, we used inter-process communication (IPC). This separated the business logic (the Node.js-based backend process) from the user interface (the render process). Ultimately, the IPC enabled fast and reliable data exchange between the two.
Offline Functionality and Synchronization
Offline performance was our top priority. We used Electron.js to create an offline app with cross-platform deployment capabilities. We also built a mechanism for local caching and synchronization using SQLite.
System Integrations
To deliver a unified and uninterrupted cashier experience, WebbyLab integrated several external systems:
- ERP system. Ensures real-time synchronization of product, employee, order, and store data between the cash register and the central ERP. When offline, all information is stored locally in SQLite. Once the connection is restored, a task scheduler automatically transfers and reconciles transactions with the ERP every five minutes.
- Checkbox.Kasa.Manager. Handles receipt fiscalization, Z-reporting, and the ability to open and close shifts directly from the app.
- PayLink POS Server. Enables cashless payments through terminals. A custom API we developed ensures stable communication between the app and payment terminals with minimal latency.
- Loyalno. Supports the client’s loyalty programs, including discounts, bonuses, and coupons, as well as marketing activities.
- Nova Poshta. Automates the creation and tracking of delivery orders.
Results
The desktop application WebbyLab delivered helped unify and optimize cashier operations across all of the client’s 30+ stores. Cashiers now have a single, stable tool for processing sales, regardless of whether the internet is stable, slow, or completely down.