technologies: Kotlin, Spring Boot, Flutter, Grafana, Figma
the POS system desperately needed an update
Every legacy system eventually reaches a point where its founder must face the ultimate challenge: revamping the software. The clock is ticking! Every day, acquiring new users is becoming more challenging with an outdated UI and disturbing performance. Yet how do you upgrade the system without losing loyal users who have made you profit all these years?
Our client, a company offering digital solutions for the hospitality industry, was facing these challenges. For over two decades, its system has been utilized by restaurants nationwide. However, the application required modernization to remain competitive in the POS market. The client reached out to us for a complete POS system revamp. They also expressed interest in developing mobile applications to expand its digital portfolio.
solutions: POS with a modern UI, performance monitoring, and mobile applications
Based on over a decade of experience developing POS solutions for brands like Just Eat POS, we began the work by auditing the software for modernization, allowing us to spot areas for significant improvement.
One of the key aspects of the upgrade was a new product design to streamline the process for users, who are primarily waitstaff. The modern UI provides quick access to core POS features such as managing table orders with any possible modifiers (extra fries, no onions, etc.), sending orders to the kitchen, and managing payments, including splitting payments and tipping. It also ensures integrations with retail devices including printers, cash registers, terminals, and more.
During the application re-engineering, we identified features that needed alteration or addition. For example, we introduced a role management feature that allows assigning roles with appropriate permissions, such as restricting discount approvals to managers. This addition enhances the system's safety and transparency for restaurant staff.
Our mobile team also developed a hybrid mobile app accessible for iOS and Android. That has been a meaningful upgrade because the system used to be based only on a desktop application.
challenges: compatibility with the legacy system
Following the client's expectations, we needed to keep the old version of the POS operational while working on the modernization. It matches our revamp approach. Our goal is not to create a revolution, so compatibility with the legacy system is key.
Despite the old version being built with outdated technologies like Visual Basic 6 and operating with binary files, we ensured compatibility. Our team built a Spring Boot and Kotlin library to read and translate these binary files into Kotlin objects.
Day by day we retain compatibility while integrating new technologies. We deliver code compatible with the old POS and aligned with modern standards. This way, when the old version is eventually retired, the new one will be self-sustainable and ready for further development and scalability.
Another challenge is adjusting to the various hardware that restaurants possess. Therefore we have to pay extra attention to performance and memory efficiency to make the software accessible on a spectrum of devices, both new and old. To achieve that we also introduced app performance monitoring with Grafana, which enables us to foresee performance issues before they could affect users. Thanks to reports and alerts, we are aware of some features not working properly or if the system is overloaded, and we can quickly react to that.
results: releasing the new POS solution
The modern version of the solution has been released reaching its first users in a testing phase. Meanwhile, our team continues the software modernization by planning cloud migrations, further integrations with payment and food delivery providers, and enhancements to the payment process.