How we improve the charging experience for electric cars
By: José Reis
Tags: Industry Insights, Mobility, Software Development, Product, Electric Car

Bringing value to EV drivers

Photo by Mika Baumeister on Unsplash

We already know the concerns of potential customers and why they hesitate to switch to EV. The solution is simple: decrease the fear of running out of power and improve the charging experience.

We started a project to rethink the whole concept and find ways to elevate the experience. We developed a product that should run as a mobile, web, and in-car application. The idea behind the product is to answer all questions above through a variety of planning, finding, charging, and paying features. This application will help to plan its user’ trip by finding the most suitable public charging stations (taking into account the car’s plug type, the charging provider and its way of usage), reserving the station and letting the users charge their car with a single RFID card or in-app (with QR codes). It even adjusts the trip based on what the driver wants to do (eat at a restaurant, shopping, playgrounds for kids, you name it) while charging the car. Most of the described functionalities above can also be used to charge each vehicle at home as it also offers home charging features and small personal charging stations. Everything would be connected to the existing infrastructure of your car providing a seamless way of charging the vehicle wherever the driver is.

Concerning payment, the app facilitates billing and payment for all app features by centralizing it in a single payment method for the user through subscription or ‘pay as you go’ plans with flexible charging agreements and a transparent billing system.

By providing access to the charging network with the highest density across Europe (up to 100.000 charging points) alongside with the features stated above, this application eases the fear of the e-cars running out of power. It is revolutionizing the charging experience to a whole new level by making the whole process as simple as it can be!

The tech behind it

It’s time to describe how we would build the product and drill down our architectural decisions. This is the tech stack we decided to use:

Flutter was our choice of election for the mobile frontend. We were aware that this framework is still immature but the fast time-to-market speed, similar performance to native apps, and its own rendering engine met all the requirements for what we had in mind. Also, dart is not that different when compared to React, which was the technology picked for our web app.

Due to React’s maturity and strong community, we were able to move very fast as there was a great chance of having one solution or two from the community for almost every challenge we came across.

Both applications are connected to a middleware layer (or backend for frontend) which is running on a JVM environment distributed into several microservices. The concept behind all microservices was to isolate parts of the business as every service integrates with an external system. Moreover, we are expecting to receive more traffic on specific services. If we find out that a service is a bottleneck for the system, we can always start another instance to handle high amounts of traffic.

Concerning security, all services are behind a strong security layer to make sure we are compliant with even the strictest security requirements. We also use their authorization server to get an OAuth access token and request data from our services (resource servers).

Despite the fact that our backend is used mostly as a middleware layer, there’s the need to have a lot of dynamic business data. This layer had to scale in a horizontal way as we could not predict what rules might come. To meet these requirements, we opted for a NoSQL approach.

Challenges along the way

Okay, so our mission is clear, the goal is ambitious but feasible and we are highly motivated. However, we come across all sorts of challenges while planning and developing on a daily basis… I am not going to lie, this is tough.

Given that the environment for this product is a very traditional industry, which is used to build combustion cars and is only slowly adapting to software-driven products, there are some challenges along the way:

Both sides bring different strengths to the table

The product needs to integrate with a non-stop changing environment and infrastructure

Tight deadlines

The automotive industry is used to follow the waterfall approach, whereas software development needs to happen agile, therefore constant exchange and education is a must

Photo by You X Ventures on Unsplash

Being agile and adaptable is what we are good at. And if we weren’t, we couldn’t catch up with the speed of this ever-changing infrastructure! This product integrates with a lot of other systems (whether they are internal to the company or third-party ones) and all of these services are constantly changing its scope or refactoring the APIs. Fortunately, we have built a resilient product that adapts and overcomes our integration issues. By being cloud-based, automatizing the development cycle, delivering quality code by testing every possible case and keeping very close communication loops with our peers from internal/third party APIs that we integrated makes us move fast without breaking things.

(…) being cloud-based, automatizing all the development cycle, delivering quality code (…) and keeping very close communication loops with our peers (…) makes us move fast without breaking things.

Last but not least, our deadlines are often tight. Due to the tremendous revolution of this sector and fierce competition, ship dates matter. Like, a lot! And despite the whole planning and team effort, it is frustrating when the planning and ship timings are threatened by third party dependencies which are oblivious to us. However, we try to diminish this issue and achieve our goals by synchronizing all the affected parties into a cautiously planned release train with a duration of three months. This helps every party to predict this unpredictable fast-moving environment.

Despite all the challenges, what matters is bringing value to the world. And we at diconium feeling accomplishment at the end of the day, because we know we are contributing to the rapid growth of the e-mobility sector by shipping useful and quality software.