The app employees open to charge their car at work

Platform: Flutter (Dart), one codebase for iOS and Android
State management & DI: flutter_bloc, get_it
Navigation: go_router
Networking: Dio, WebSocket (web_socket_channel)
Push notifications: Firebase Cloud Messaging, flutter_local_notifications
Auth: JWT
Scheduling: intl, jiffy, custom in-house calendar package
Device: QR scanner, permission_handler
Testing: mocktail, bloc_test, very_good_analysis
Backend: Client-owned
An employee pulls into the office car park, plugs in, and wants the rest to be easy: start the charge from their phone and come back later to a full battery. Behind that sits HESS and their BillEVe product, which bills the electricity back through the employee's payroll. We built the app they use.

The Client

HESS Cash Systems GmbH is a German company based near Stuttgart. Their roots are in payment and cash-handling hardware, and they also build software products for businesses. One of those is BillEVe, a system that lets an employer manage and bill the electricity used by employees' private EVs, fleet vehicles, and visitors at company charging stations.

The core idea is automated billing. Charging costs reconcile against the company's payroll each month and come straight out of salary, so nobody administers it by hand. BillEVe works with third-party charging hardware over the open OCPP standard, and HESS owns the backend. The employee-facing mobile app is the part we were brought in to build.

The Challenge

A company installs charging stations in its car park and offers them to staff as a low-cost benefit. From the employee's side, the app has to handle the whole interaction: see which chargers are free, start a session at a connector, follow the charge as it runs, and end it, with every session recorded so it can be billed back through payroll.

Charger state is shared. One person plugs in, and everyone else looking at the app should see that connector go busy. The app holds a WebSocket connection to the backend rather than polling it, so session progress and availability move as they happen.
The division of work shaped how the project ran. HESS built and owned the backend, and we built the cross-platform mobile app against the API they provided. That meant our progress depended on theirs.

Our Approach

We joined for the second phase. An earlier MVP was already live before we came on, and it covered the basics of charging at the office. An employee signed in through an invite link, then authenticated at the charger by scanning its QR code. They could see the chargers on site and whether each was free or occupied, follow their own session as it ran, and end the charge from the app. Errors during charging came through as notifications, and past sessions were kept as a transaction history.

Our phase built on that. The headline addition was booking ahead: an employee could reserve a charging session up to seven days out, then change or cancel that reservation later. A calendar showed the bookings, either across all chargers or filtered to one. This was a feature HESS had been promising its users, so it closed a gap they had already set expectations around.
We joined for the second phase. An earlier MVP was already live before we came on, and it covered the basics of charging at the office. An employee signed in through an invite link, then authenticated at the charger by scanning its QR code. They could see the chargers on site and whether each was free or occupied, follow their own session as it ran, and end the charge from the app. Errors during charging came through as notifications, and past sessions were kept as a transaction history.

Our phase built on that. The headline addition was booking ahead: an employee could reserve a charging session up to seven days out, then change or cancel that reservation later. A calendar showed the bookings, either across all chargers or filtered to one. This was a feature HESS had been promising its users, so it closed a gap they had already set expectations around.

The calendar itself we wrote as an internal package. Off-the-shelf Flutter calendar widgets assume a diary. What we needed was a view of connectors over time, where a booking occupies a specific charger for a specific window and a tap on empty space means a reservation.
Around the booking work, we added the pieces that make an app feel finished: a light and dark theme, push notifications, and a bonus-points system that rewarded users, with a dashboard showing who had earned the most. Settings, logout, and app information moved into a new More tab.

The core flow stayed simple. An employee arrives, opens the app already signed in, scans the code at the connector, and confirms. Anyone else, at their desk or working from home, can open the app and see that a charger is taken until a given time. When a session ends, it is recorded as a transaction with a calculated cost, ready to flow into payroll billing.

We scoped the work quickly. Acceptance took longer, around two to two and a half months, largely because the dependencies sat on the client's side. With their backend in the hands of one developer, a spell of illness or leave could leave a finished front end with nothing to deploy against.

The Solution

The result is the cross-platform app employees use to find, book, start, and track charging at the office, with each session feeding into HESS's billing. The booking calendar was the main thing our phase added on top of the live MVP.

Outcome

The app is published and in use. An employee taps to charge, and the cost reaches their payslip without anyone assembling it by hand. Current figures on installs and active sites sit with HESS
Feel like your project would win from our work? Let's talk!
sales@smartificial-ai.com
Made on
Tilda