Fondation des Parkings - Tariff Module Project

At the end of 2020, we won the call for tenders launched by the Fondation des Parkings for a new digital project that is part of its global strategy of digital transformation.

MobileThinking was therefore mandated to accompany and develop the "Tariff Module" project, which allows the parameterisation of parking tariffs and the calculation of parking costs in the various infrastructures managed by the Fondation des Parkings as well as on the public streets.

The Tariff Module makes it possible to centralise and standardise the calculation of costs, which until now has been implemented in different systems, and to extend its possibilities in terms of configuration, and therefore the offer to its customers.

For example, when you pay for your parking with one of the partners' mobile applications (see a selection on https://www.gepark.ch/), their server contacts the common calculation engine that we developed for the Fondation des Parkings. Previously, each partner had its own calculation engine and had to update its tariff configurations independently, creating additional communication and significant risks of error.
Dashboard configurateur fondation des parkings

The Tariff Module

The objective of the module is to use different calculations and contexts (e.g. the possibility of a discount or a free hour of parking) to determine parking rates. Its purpose is to respond to different requests from various sources, such as payment applications or a simulation from a website (e.g. to simulate the costs of any parking with parking meters or toll collectors in any car park that the Parking Foundation manages). This calculation can be complex depending on the context(s) and has to meet different rules configured in the system.

For example, some car parks offer one or more free hours per day to each car owner. With the new calculator, it is guaranteed that free time is only granted once every 24 hours and that there is no possibility to bypass the system and use more free time than expected.

With the help of a simulation tool that we have developed in the configurator interface, it is possible to test and simulate the different tariff calculation rules and functions.
Simulateur tarif fondation des parkings
A major point of complexity lies in the fact that all car park tariff configurations are versioned. The aim is to be able to recalculate a tariff in the past despite a change in the target tariff.

Client

Fondation des parkings

Status

In production

Role

Design and development of the tariff module

Technologies

Laravel - Lumen - VueJS - Docker - Kubernetes - POSTGRE

Years

2021 - 2022

Our contribution

From an architectural point of view

  • We decided to split the project into 3 services: the tariff calculation service, the tariff configurator (management backoffice), and the context module.
  • The tariff calculation service is responsible for providing an API that selected partners can contact to calculate the costs of a parking lot based on a start and end time (and other possible parameters). This service is extremely critical, it must be available at all times, and the architecture allows for multiple instances to ensure redundancy and scalability.
  • The configurator (management backoffice) includes several services: tariff configuration, user management and access rights, context configuration, etc.
  • The context module allows the synchronisation of different data sources (e.g. receiving data from other systems that the Parking Foundation integrates into its IT infrastructure). The calculator can then use this data to determine the context of the users of the car park and provide them with the most appropriate pricing (e.g. for season tickets).

From a technology and programming language point of view

  • The programming language for the entire system is PHP version 8.0+. All modules use the Laravel framework (https://laravel.com/). The configurator (management backoffice) uses the Vue.js framework (https://vuejs.org/) for its frontend. The contextual module uses the Kafka (https://kafka.apache.org/) and Redis (https://redis.io/) queues to manage data synchronisation via events and Laravel Horizon jobs (https://laravel.com/docs/9.x/horizon). The OpenAPI specification (Swagger - https://swagger.io/specification/) for the description of all the APIs made available. We only work with open source technologies that are widespread and have been maintained for many years, so that we are not dependent on proprietary solutions or libraries. These technologies will allow the system to be sustainable in the long term.
  • Each module has its own set of unit and functional tests. We run these tests during the development and deployment phase via the GitLab CI/CD system. The system has three environments, test, staging and production, all based on their own Kubernetes namespace. This separation allows the Parking Foundation to have full control over updates to the system. They can test the system and define when to put a new feature or change into production.

From a project management point of view

  • Within the framework of this "Tariff module" project, we began by carrying out the first phases in the form of design workshops with the Fondation des Parkings team.
  • These workshops allowed us to analyse and design the architecture for managing the various rules and use cases for calculating tariffs.
  • On the basis of these workshops, we developed the Tariff Module in an iterative approach, and kept in weekly contact with the team in order to present them with the progress of the project and specify the next functionalities to be developed.
  • In this way, we remained aligned throughout the project to deliver a quality solution despite the high complexity of the business needs of this project.
Confiduration de tarif - fondation des parkings

What next?

The Fondation des Parkings is in the midst of a digital transformation and we are delighted to continue to support them in this endeavour.
Do you have an idea for a digital project? We are here to help you.