I build production software end to end, from the device to the browser.

For five years I've worked on Hanover Displays' onboard product stack, in a team of four engineers: passenger displays, driver screens, the backend sync behind them, and the web tools we use to ship them. I'm looking for a remote full-stack role.

Some of my work, running all over France

If you've taken a bus or an airport shuttle in France, chances are you've already used it.

What Where you've seen it
Driver touchscreens Next to the driver, in the cab
Passenger displays Inside the bus, telling you your stop is next
Departure boards On airport shuttles and at train stations
Onboard software Every computer in the fleet, old and new, on one C++ codebase

Selected work

Most of what I build ships into buses and stations, so I've cropped the screenshots and blurred anything private.

Fleet dashboard replaying one bus's day: its route traced in red on a map, next to a timestamped log of stops, departures and alerts.
Replay mode: one bus's day redrawn on the map, next to its event log. The map is blurred on purpose.

Live fleet dashboard

The web app bus operators keep open all day: every vehicle on a live map, every service on a timeline, and a replay of any bus's day.

Vue.js, Leaflet maps, live vehicle data, single sign-on

Read the case study
Problem
When a bus runs late, breaks down or gets a complaint, the operator needs to see it right now, and later be able to check what actually happened.
What I built
The Vue.js frontend: a live map, a timeline of every service with late runs in red, fault and alert panels, a complaints view, and a replay that redraws a vehicle's day next to its event log.
Result
Live in production with French bus operators.
Configuration tool with sections for onboard software, inputs, modem, audio, driver console and signage.
Equipment sections of a configuration profile. Values redacted.

Configuration profile generator

An internal web tool that turns a customer's equipment list into files ready to flash.

Problem
Every new customer project meant hand-editing configuration files for SIM and APN, display type, destination signs and emergency features. Mistakes only showed up on the vehicle.
What I built
A browser tool where the team describes a project in a structured form. A build step generates every file the vehicle needs and reports status and logs as it goes.
Result
Provisioning errors on new projects dropped to near zero.

Web UI, build backend, structured configuration data

Read the case study
Driver touchscreen in a bus cab showing the next stop, departure time and stop sequence.
Journey screen on the onboard computer, photographed in the cab.

Driver dashboard

The touchscreen a bus driver uses to log in, pick a service and run the journey.

Problem
The duty-takeover screen had to run on modest onboard hardware and stay usable with one hand, in a moving vehicle, in the middle of a shift.
What I built
A rebuild as a lightweight HTML, CSS and JavaScript app on embedded Linux: driver login, service selection, journey and departure states, and entry points for ticketing, passenger counting and inspection.
Result
Part of the onboard system now in daily service with French operators.

HTML, CSS, JavaScript, embedded Linux, onboard services

Read the case study
Passenger display on a wired test bench showing line 31 and its stop sequence.
Route display running on the test bench before deployment.

Passenger information displays

The screens that tell passengers where the bus is and when their stop is coming.

Problem
Journey data lives on the vehicle and the server. Passengers need it as one idea per screen, readable from a few metres away while the bus is moving.
What I built
The full pipeline: RS232 serial wake-up, content rendering for in-vehicle screens and live sync with the server. Route timeline, next-stop and accessibility views.
Result
In daily service across France, in buses, at train stations and on airport shuttles.

Embedded Linux, RS232, web rendering, server sync

Read the case study
Airport shuttle display listing flight departures and their status.
Departures board on an airport shuttle.

Airport shuttle displays

Flight-connection boards for the buses that take you to your plane.

Problem
Every shuttle passenger has the same question: is my flight on time, and where do I go?
What I built
Departure boards using the layout passengers already know from the terminal: time, flight, destination, status and zone. One layout system, branded per airport.
Result
In service on French airport shuttle lines.

Passenger display software, flight data integration

Read the case study

Experience

  1. 2021 – now

    Embedded & full-stack software engineer

    Hanover Displays, via S2I (Celad group), Saint-Laurent-du-Var

    One of four engineers on the onboard product stack. The projects on this page come from there, including the live fleet dashboard. I also support operators directly: remote diagnosis, bug fixes, and on-site hardware replacement and wiring when it can't be done remotely.

  2. 2021

    Full-stack developer intern

    Renault Software Labs, Sophia-Antipolis

    A React app to run and automate test scenarios against Renault's connected-vehicle cloud, with a real-time SVG view of vehicle state. Python microservices for remote vehicle API calls, and Docker and Bash scripts that simulated a physical test bench.

  3. 2020 – 2021

    R&D intern, embedded AI and vision

    STIMUL'ACTIV, Mulhouse

    Facial recognition for the Mwoo companion robot, built for people with communication disabilities. I benchmarked LBPH and CNN approaches on a Raspberry Pi under frame-rate and memory limits, then integrated the one we chose.

  4. 2020

    C++ / Qt developer intern

    UHA, Biopôle de Colmar

    A Qt desktop app that moved readings from 50 energy meters from SD card to CSV to MySQL, with charts for the analysts.

Engineering degree in computer science and networks, ENSISA Mulhouse, 2021. Before that, two years of classes préparatoires (MPSI/MP) in Besançon.

Tools I use

Frontend
React, Vue.js, TypeScript, JavaScript, HTML and CSS, Qt
Backend
Python and Flask, Java with Spring Boot and OSGi, gRPC, GraphQL, MySQL
Systems
C and C++, embedded Linux, Buildroot, TinyCore, systemd, ARM cross-compilation, RS232 and RS485
Delivery
Git, Docker, Jenkins, Maven, Pytest, JUnit, Mockito, Scrum

How I work remotely

I already fix hardware I can't touch

The buses I support are spread across France. Diagnosing and fixing them over SSH, without anyone on site, is a normal part of my week.

Small team, whole stack

We're four engineers on one product stack, so nobody gets to stay in one layer. Five years of that, from boot sequence to browser, means I'm often the one who knows why something broke.

English and French, CET

TOEIC 965 (C1) and native French. From Nice I overlap the whole European working day and US East Coast mornings.

Portrait of Yassine Benomar

Hiring for a remote full-stack role?

Email is the fastest way to reach me. My code lives in an internal GitLab, so there's no public GitHub, but I'm glad to walk through the architecture of any project here on a call.

yassine.benomar1@gmail.com linkedin.com/in/yassine-benomar