Loyalty system: ready, steady, GO!

Every developer loves interesting tasks! Also – new technologies and cool customers. And recently our team was lucky enough to work on a project described above and there were many more interesting things. We were so impressed by this experience that decided to tell you about it here on our blog.

Our customer is an international company that provides solutions for sales and payment for goods. His products are spread worldwide – from North America to Europe and the Middle East. Collaboration with such a serious partner is already a thing to be proud of, especially since this is not our first project together.

This time we were to take part in the development of an application that was in charge for sales – both online and in usual shops. In addition to all software related particularly to the purchase process, the app has a clients loyalty module. The module allows a user to manage various bonus programs selecting them from a wide list and personalizing to his needs. That is what our team was working on.

The problem that we had to solve was the following: the existing cloud solution for the loyalty program management, that was used at the time, not always met the needs of the customer’s clients. The truth is that some shops were located in regions where the problems with the Internet connection and power cut occurred frequently – yes-yes, that could happen not only in Russia but even in developed European countries! So that the shops in remote regions could use the full service, the customer decided to develop a local client, which would synchronize its data with the cloud solution. During power cuts such a client storages the information “within”, and when the connection is restored, the info is transferred to the cloud storage. The customer entrusted the development of the local client to Noveo.

The rules of discounts use in the bonus program were described in a JSON file. Our local “engine” was designed in such a way that the file could be replaced any moment by a file with new promotional actions, discounts, and other options.

The synchronization with cloud services is not an easy task itself, but we had already been acquainted with it, so the other project details were more interesting for us. The first one – Go programming language. That was the first serious project for us in that language, so it was both interesting and thrilling. But our developers demonstrated the highest class once again, so the customer had no issues with the code quality.

The next peculiarity was the Test Driven Development (or TDD) approach, which we don’t use much in our projects. In this case, the work went the following way: the customer provided the input and output data, and we wrote unit-tests, developed the local client for the loyalty system and ran the tests on the local client at first, then on the cloud one, and compared the results. If the results didn’t match, we then searched for (and eliminated, of course) the cause of it. Thank the customer for the interesting experience!

Here we should mention the customer. All members of our team unconditionally note not only politeness and quickness of his answers but also his high technical qualification. He told about his vision of the project in detail, about his objectives and tasks, about the functionality that was already implemented and described the results he wanted to get from Noveo team. In addition, there was the system composition, the cloud platform, all aspects and nuances of its operation described competently and in every detail. The necessary documentation and artifacts were also provided immediately. ‘They answered the questions before we asked them!’ the project manager Pavel tells us about the cooperation.

At present, the project is already developed, implemented and makes happy both clients getting good bonuses and the shops owners, who see their happy clients ready to come back again and again. We want to thank the guys once again for their great work and the customer – for having entrusted us such a cool project. We hope to meet him again and work on something equally interesting!