A casa Tua: microservices and Agile at the service of a non-profit project

 In such a delicate moment as the one we are experiencing today, each of us is wondering how to make a contribution. So, many people and many companies in every field have helped by bringing innovative and original ideas to life.

Something happened at Mia-Platform as well. The initial personal idea was to collect and share a list of neighborhood shops with delivery service, but it grew to become a collective initiative involving many people in the company.

The goal was to create a digital tool, a site, and an app, which would allow people to find stores and all small grocery shops with a delivery service, so as to avoid the long lines at supermarkets and support minor traders in trouble.

 

History

Sunday afternoon. First weeks of lockdown. The news tells about endless lines at supermarkets and small traders in serious economic troubles.

Chiara, who belongs to Mia-Platform’s communication team, suggested Federico and Giulio, CEO and CTO of the company, to create a shared file within the company highlighting small local groceries that make home delivery. "Okay," was the answer.

But we can do better. Federico (another one!), a longtime developer of the company, had the idea: “why don't we go back to our origins - Mia-Platform was born as an app publishing project - and develop an app that can help everyone find stores with delivery services?

The “okay” answer became: "We support you, both operationally and economically". Other teammates joined Chiara and Federico: Tommaso, Davide, Francesca, Simone, Giulia, Antonio, Federico, and then Sofia, Nicolò, Edoardo, and many others who dedicated body and soul in the evening (and at night), to develop the project. First of all, the company management was very enthusiastic on that Sunday and stepped up: the CTO himself laid the foundations of the work with the newly formed team.

 

The project

Within a weekend, the first version of the website was released: a list and, thanks to the geolocation, a map providing information about the stores with delivery service. A filter is also in place, to select the type of product: fruits and vegetables, meat, fish, personal care, household goods, etc.

In a few days, thanks to Mia-Platform's DevOps Console and the runtime components which are provided by the platform to accelerate the development of APIs and microservices, it was possible to launch the project. More and more people slowly joined the project that has become truly collaborative. The work of data entry and research of information about the grocery shops was precious until the form for adding shops was installed. Now even residents and shop owners can add stores and make them immediately visible on the platform.

The publication of the website was immediately followed by iOS and Android apps.

 

A_casa_tua_App_social

 

Technology

The team launched A Casa Tua in a few days thanks to Mia-Platform technology, which was freely made available for the initiative.

Mia-Platform has provided rapid and safe tools for the development of the project, from the creation of the environments to the release of microservices and APIs. The team of developers and operations was able to work in "self-service" mode through the Mia-Platform DevOps Console, which facilitated collaboration and alignment. In addition, the Console allowed the teams to work even remotely and made incremental and continuous releases very simple. The CRUD data model at the base of the project was configured in a few minutes and it was possible to enrich "A Casa Tua" with content, thanks to the Headless CMS.
The project faced numerous technical challenges in terms of design, performance, and functionality development. This was an opportunity to experiment with some new patterns, solutions, and technologies that we were curious to deal with.

A_casa_tua_web

 

The Agile approach

The Agile mindset allowed us to publish the project in a few days and to manage the challenges that emerged as the job was getting bigger.

Since the first moments, the team wondered which were the basic and essential functionalities in order to go public. Thus, it was necessary to prioritize the numerous emerging ideas.

One of the features that best represents this process is the “Add a Store” feature. In projects like this one, offering a good database is essential and, therefore, it was important to give everyone the opportunity to add the shops. The ideal option was, in fact, to give the user the possibility to directly fill in a form.

However, this would have greatly slowed down the time of publication. So, we decided to go step by step:

  • in the first release, there was ad hoc email address to request to add a shop, which would then have been manually entered by us on the CMS;
  • in the meantime, an excel has been elaborated to be conveniently imported into the CMS, and was shared among friends and relatives;
  • in the last phase, a form was published, which could be easily filled in and automatically updated with the new type of products inserted, thanks to which everyone can now add new stores.

The agile approach was not only crucial to the "Add a Store" feature, but also in terms of monitoring.

A Casa Tua gives you a list of stores sorted by distance. Therefore, we wondered where most of the requests came from and which were the areas the users were most interested in the shops’ list. This is because, as the number of stores increased, the performance of A Casa Tua began to suffer and it was necessary to study a better sorting algorithm.

 

Thanks to the Kibana dashboards, it was possible to monitor the number of requests and use this data to implement an optimization that improved performances. It was also important to experiment to see the reactions of the users. Starting from a fast implementation, we understood what the product's key feature was and from there, we stabilized the implementation by comparing different languages:

  • Node JS was the language used in the beginning. Although it was not the best performing, it allowed us to quickly run numerous tests because it is more suitable for implementation;
  • Go was then used to make a comparison with other languages ​​as it became increasingly clear that this would be a stable challenge to face;
  • Rust was the language used to rewrite the microservice once a performance comparison was made and the mode in which the user wants to see the data was  established.

 

Agility and Microservices

An Agile approach combined with the use of microservices has allowed us to calibrate the project based on new needs, test it quickly, and improve the most difficult points.

Although the use of Microservice and API combined with an incremental step approach can seem everlasting, it allowed us to manage in a short time many of the difficulties that arose later.

Thus, we were able to rewrite the ordering algorithm without interfering with the published functionalities and services, such as the frontend, the insertion of a shop, etc. In addition, we were able to continue evaluating improvements and new features.

 

A Casa Tua today

Today A Casa Tua has almost 2000 shops throughout Italy, many stores in the approval phase, and a constantly expanding user base.

The Municipality of Milan also reported the initiative among the Collaborative and Innovative Services available to all residents.

The idea is to expand the project geographically: the infrastructure is ready to be used abroad as well.

Visit the website

Download the App for iOS

Download the App for Android

Follow A casa Tua on Instagram

 

Related Posts