Chat on WhatsApp

How We Stabilized a Self-Service Kiosk System Handling 5000+ Images & Offline Verifone Payments

Kalpesh Patel

Kalpesh Patel

views 14 Views
How We Stabilized a Self-Service Kiosk System Handling 5000+ Images & Offline Verifone Payments

Table of Contents

Toggle TOC

When you build software for kiosks, you’re not building another web app – you’re building a machine that must survive low memory, unreliable network, offline transactions, and real-time customer usage without ever crashing.

This is the story of how we diagnosed and fixed two deeply complex performance problems in a food-ordering kiosk system built with Angular 12, .NET, Node.js Development and Verifone – running on a Samsung Tizen OS device with just 4GB RAM.

And yes – the kiosk kept taking orders even without the internet.
That was both the feature… and the monster we had to tame.

The Kiosk – At a Glance

This wasn’t just a touchscreen menu.

It was a full standalone ordering machine:

  • Customers browse menu → place order → pay
  • Works online and offline
  • Payments routed through Verifone terminal
  • Syncs menu data & offline transactions regularly
  • Prints receipts, pushes orders to POS & Kitchen Display
ComponentTech
FrontendAngular 12
Backend.NET + Node.js
Local DBSQLite (Web SQL)
DeviceSamsung Kiosk • Tizen OS (4GB RAM)
Payment TerminalVerifone (No Web SDK/NPM for Angular)

This means everything – UI, sync engine, printing, payments – shares limited CPU, memory, and a single communication channel to Verifone.

So when something goes wrong, everything breaks.

The Two Problems That Almost Killed Performance

1. Menu Sync: Thousands of Images = Memory Explosion

The kiosk regularly downloaded and updated menu content, including:

  • 1,000 to 5,000+ images per outlet
  • High resolution required for display
  • Sync triggered frequently based on configuration

The original implementation subscribed to events for each downloaded image…

1000 images → 1000 active event
5000 images → 5000 events waiting in memory

The result?

  • Memory consumption spiked
  • UI began lagging
  • Printer froze mid-operation
  • Kiosk eventually required manual restart

Not ideal when customers are mid-order.

How We Fixed It

We changed the sync pipeline to:

  • Download image
  • Process
  • Immediately destroy events

No stack buildup. No memory leak. Simple but game-changing.

  • Final output rate: 2–3 images per second
  • UI stayed smooth, printer remained responsive
  • Memory consumption stabilized drastically

2. Offline Sync + Live Payments = Node Crash

The System Supported Offline Payments – Great.
But when the internet returned, the Kiosk synced them to the backend – Also great.

EXCEPT when sync & live payment happened simultaneously.

Here’s the trap:

  • Browser cannot talk directly to Verifone (CORS + PCI restriction)
  • So Angular → Node → Verifone socket is the only path
  • Verifone allows one command at a time
  • Node was stuck at v4 – no chance of upgrading
  • No official SDK or NPM to optimize communication

So the moment:

Offline sync fetching old transactions AND Customer tries to make a live payment

  • Both fight for same socket
  • Node module crashes
  • Kiosk freezes
  • Printing stops
  • No orders continue

A total service breakdown.

Root Cause + Permanent Fix

Instead of parallel execution, we serialized Verifone communication:

OperationFrequency
Terminal health checkEvery 7 mins
Offline transaction syncEvery 30 mins

The key rule: Never let syncing and payment run at the same time.

And it worked.

  • No more socket clashes
  • No Node crashes
  • Payments & sync both stable
  • No kiosk downtime during rush hours

What This Taught Us

Engineering for kiosks is a different battlefield.

You don’t get infinite memory.
You don’t get the luxury of retries.
You don’t get to deploy patch updates easily.

Every solution must be efficient, resilient, and edge-case proof.

This project pushed us to dig beyond surface bugs and understand:

  • Memory lifecycles
  • Hardware limitations
  • Offline queuing
  • Device communication constraints
  • Verifone single-socket behavior

The stability we achieved wasn’t from rewriting the system – but from understanding it deeply and reducing friction at the core.

Final Results

BeforeAfter
Frequent kiosk freezeZero hang incidents
Node socket crashes100% stable
Image sync slow + heavy2–3 images per sec
Offline sync blocking UINon-intrusive, background safe
Printer stuck mid ordersSmooth prints always

Related Blogs

Divyesh Solanki

Divyesh Solanki

IoT in Healthcare: Improving Patient Outcomes with AI Integration

The healthcare sector covers a significant portion of the global economy, especially in the post-pandemic age. However, an aging global population, the prevalence of chronic diseases, and a persistent shortage of qualified professionals create hurdles for this sector. Moreover, the...

Read More Arrow
IoT in Healthcare: Improving Patient Outcomes with AI Integration Artificial Intelligence
Jaimin Patel

Jaimin Patel

Data Science For Finance: Mastering Fraud Detection & Risk Management

Data is the greatest asset and the most significant vulnerability in this AI-driven age. As financial institutions switch to hyper-digital ecosystems, the risk related to privacy and data security has increased exponentially. Traditional rule-based systems are insufficient in preventing sophisticated...

Read More Arrow
Data Science For Finance: Mastering Fraud Detection & Risk Management Technology
Divyesh Solanki

Divyesh Solanki

Scaling IoT Analytics- Edge vs Cloud Processing

The Internet of Things (IoT) has become a new norm in the modern industrial landscape. Globally, enterprises have adopted it to drive digital transformation and implement the Industry 4.0 revolution. However, such penetration of the IoT technology from smart factories...

Read More Arrow
Scaling IoT Analytics- Edge vs Cloud Processing Technology
Divyesh Solanki

Divyesh Solanki

Latency, Throughput, and Cost: Benchmarking MLOps Infrastructure

Algorithm is everything when it comes to measuring the effectiveness of AI models and the success of AI-based startups. Large Language Models (LLMs) and specialized edge AI are gaining fame quickly as enterprises want scalable solutions for handling multiple tasks....

Read More Arrow
Latency, Throughput, and Cost: Benchmarking MLOps Infrastructure Technology
Jaimin Patel

Jaimin Patel

Building a High-Performance Search System for a Car Mechanic CRM with MongoDB Change Data Capture

The Problem In our car mechanic CRM application, users needed to search across multiple entities simultaneously-customers, their vehicles, appointment history, and service records. However, our data architecture presented a significant challenge. The Data Architecture Challenge Our application followed database normalization...

Read More Arrow
Building a High-Performance Search System for a Car Mechanic CRM with MongoDB Change Data Capture Technology
Jaimin Patel

Jaimin Patel

Data Governance: Building Trust in Enterprise Data

In the era of Generative AI and Large Language Models (LLMs), data governance remains at the center stage. Data is the DNA of modern enterprises; therefore, it requires the necessary control and security with accuracy. Data governance can help companies...

Read More Arrow
Data Governance: Building Trust in Enterprise Data Technology

Book a consultation Today

Feel free to call or visit us anytime; we strive to respond to all inquiries within 24 hours.



    Upload file types: PDF, DOC, Excel, JPEG, PNG, WEBP File size:10 MB

    btn-arrow

    consultation-img