- Scope project management, mobile app development, backend, cloud infrastructure implementation
- Timeframes February 2019 – till now
- Technologies Mobile: Flutter, Bloc, Firebase, Codemagic used for distributing the app to stores
Backend: ASP.NET Core, MSSQL, Docker, Redis, Kubernetes, OAuth
DevOps: Kubernetes, Helm, Azure Devops, Prometheus
- Business sector eCommerce
- Team 1 UX designer
1 UI designer
2 Flutter developers
2 Backend developers
1 DevOps engineer
2 Quality Assurance engineers
1 Frontend developer
1 Project Manager
the beginning of collaboration
the process of development
Duplicating the same code in chosen applications cuts the costs of implementation, being a universal white-label for varied Eurocash nets.
Business needs & goals
Being a part of Eurocash, one of the largest food wholesalers in Europe, IPH provides a set of useful tools for different stores within the group.
The offer is dedicated for the companies that want to support their process of sales, enhance a brand’s competitiveness, and get to know their audience better to adequately fulfill its needs.
Our task was creating a universal, innovative app, adjusted to a set standard, ready to serve new chain stores, with a possibility of a cost-efficient implementation. It is dedicated to the store’s customers, informing them about current discounts and special offers.
Functionalities covered a broad range of business requirements related to offers and promotions served by multiple chains.
The app’s backend downloads data from different sources, processes and optimizes them to provide a user with a straight-away answer.
Its design and content differ depending on the information provided by a brand of interest. The features stay the same.
It displays information about stores locations, their opening hours, discounts, and current offers, allows contacting a store’s staff via chat, creating a shopping list and using a loyalty card.
It allows connecting new chain stores at the lowest possible cost.
Single-sign-on for entire corporation suite of management products.
Enterprise grade technologies, seamless scalability.
Secure and stable infrastructure.
Advanced security and evidence logging.
The project involved creating UX mockups as a basis for views.
We prepared a set of dedicated icons and built a design system which allowed adjusting the application to varied brands. In each case we were able to change colors, logo, pictures, icons and content according to the store’s brandbook. This way, the project delivery is maximally stepped up.
Cloud infrastructure implementation
Although we were provided with a project of a platform, we suggested another solution which guaranteed a larger reliability and cost reduction.
The platform is based on Microsoft Azure cloud elements.
MariaDB database server
Key Vault for Terraform
VM Ubuntu for stage
VM Ubuntu for prod
App Service Plan for stage
App Service Plan for prod
App Service for stage
App Service for prod
The infrastructure uses Microsoft DevOps to implement the client’s application. After passing the approval process in the customer’s test environment, the application is implemented on the stage and / or prod environment using the CI / CD pipeline mechanism.
The entire infrastructure is built on the basis of Infrastructure as a Code (Terraform). Thanks to this approach, the infrastructure is stored in the repository in the form of code and is subject to versioning. It is very easy to undo the changes you have made. Additionally, we have full infrastructure documentation.
The biggest challenge was to improve the test process while implementing a large-scale system and high dynamics of design work.
In order to minimize the occurrence of failures, automatic business data compliance tests were implemented and launched to report cases of inconsistency or lack of data from the customer database.
The implementation of new functionalities often caused changes in various modules of the system, therefore, from the stage of user story analysis, we focused on a close cooperation between the testing and development team.
Joint analysis of the acceptance criteria before implementing the functionality resulted in the preparation of sets of test scenarios. The effect was a high test coverage of new functionalities which translated into a significant reduction in the number of failures occurring during tests after successive increments. By extending the above approach, we reduced the risk of defects resulting from regression. We automated the tests of existing functionalities using PlayWright and nUnit, and supplemented them by scripts in POSTMAN used in the tests of sending push notifications.
We focused on testing the integration of the built system with external systems used for exchanging information about loyalty points collected by the user, communicating with a retail client, or managing data of sales units.
The tests required knowledge of the tools, understanding the logic of external applications and the ability to identify the source of possible failures.
We prepared a trace matrix: “Functionality – Test case – Work artifact ID” in Azure DevOps to monitor progress in test automation.
In addition to creating test case artifacts in Azure DevOps and the subsequent use of the Test Plans plugin, this solution provided the ability to manage test cases and combine them into test plans. Thanks to this, all the work performed was to be easily verifiable, and the test results reports were available from the Azure DevOps level to all stakeholders.
With the additional creation of test case artifacts in Azure DevOps and the subsequent use of the Test Plans plugin, this solution enabled managing test cases and combining them into test plans.
This way, all the work performed was easily verifiable, and the test results reports were available from the Azure DevOps level to all stakeholders.
Another task was to shorten the duration of tests before the production release of the mobile application by selecting test scenarios for basic functionalities.
They formed the core of the Release Candidate tests. The resulting set of test scenarios was estimated to increase predictability in planning releases and provide time security to those responsible for business decisions.
The above-described solutions brought the following results:
Minimizing the risk of failure after the implementation of new functionalities – which translated into a reduction in the time spent on repairs and confirmatory tests as well as regression re-tests.
Optimizing the time of regression tests depending on the progress of the automatic testing coverage of subsequent application functionalities.
Optimizing the Release Candidate test time thanks to automatic test scripts.
Quality assurance of product validation through static testing of design documentation.
Increase predictability and release planning by estimating the test time reservoir.
Build confidence in the quality level of the test item.
Challenges & solutions
The biggest challenge was to integrate multiple existing applications from the customer’s infrastructure with new APIs.
We have used multiple state of the art caching and messaging technologies to solve this problem.
Another challenge consisted of setting up the infrastructure for zero downtime during the deployment.
We have solved it by using Blue Green deployment methodology with the latest Microsoft technologies.
Our solution had an innovative search mechanism for product catalog that worked in real time, allowing customers to search a large product database (400k+) with a single digit millisecond response time at no additional infrastructure cost.
State of the art APIs working in real time and 100% of time, serving tens of thousands customers.
The solution was implemented in stores such as Groszek, Eurosklep, and Gama.
We still support IPH in technological solutions the company might need. They have the constant help of our IT team.