Company Type Beauty, Cosmetic & Personal Care
Deliverables UI, UX, Planning and Development
Platform Web
Tech Stack Ruby on Rails, Square POS, EPSON ePOS


When Jacky and Connie first came to us, they were looking to replace their outdated offline self-served system with a new system that they can use across different stores. We have seen a trend of retailers moving towards self-serve point-of-sale systems, but we don’t have any previous experience working on something like this before. We face the challenge of creating a cost-effective system that can integrate with in-person payment terminals and industrial receipt printers while providing a friendly experience for their wide range of customers and their employees.



Since we’ve never worked on something quite like it, we decided to visit one of their stores to take a closer look at the current system and meet with their staff to figure how they usually use the system.

After the initial visit, we start by researching popular receipt printers and different payment terminal options as well as their capabilities and complexity. We decided on a couple of popular options and quickly come up with interactive fat-marker drawings to test out the user flow of the system.

The prototype provides a better understanding of how the app works for the customers, staff, managers, and store owners, as well as setting the boundaries for the project scope.


We chose Ruby on Rails for the backend since we need a complete administrative dashboard that shows store transactions and employee data. To provide an intuitive payment process, we decided to integrate with Square and EPSON ePOS for payment processing and receipt printing.

After we finished the initial version, we deploy the system to one of their stores and test run the system for a couple of days to observe how consumers and their staff interact with the system and closely monitor the system for any potential issues.

We made some enhancements based on user interactions after the initial test run.


To ensure the quality of all our projects, by default, we implement automatic testing during our development process.

At the end of the development, we ran through the entire application with each one of the user stories on staging with recordings and inspection reports to inform our client with the current state of the system, including application health, license dependencies, security scans, etc.

After we completed the testings, we created a user guide for store managers and owners to instruct them on how to set up and to connect all the hardware for new stores with some troubleshooting tips.

Since we involved the client throughout the entire process, it was easy for the client to learn how the system works. With our documentations and well-designed interface and user flow, it was a breeze for them to pass on the knowledge.


After the first month of the dry run, the clients and their staffs are pleased with the new system. The system was deployed to all their old and new stores shortly afterwards, and has since been running smoothly without any major technical hiccups or requires additional training.