Skip to content
Mathis Beauville

All work-

EssilorLuxottica

Three years in R&D: 7 internal applications, shared libraries, and teams given better tools

Context
R&D, EssilorLuxottica, Créteil (hybrid)
Role
Developer, design and build
Period
2022 to 2025
Stack
Angular, Node.js, Express, Docker, Azure DevOps, AWS, Microsoft Entra ID, LDAP

The context

More than three years in R&D at EssilorLuxottica, in Créteil, from 2022 to September 2025. Seven internal web applications built and maintained, two of which I ran single-handedly, from gathering the need to going live. And, in between, everything that serves several teams at once: shared building blocks and tooling.

The subjects

Two projects run end to end

On these two projects I gathered and analysed what users needed, chose the architecture and the technologies, built, shipped, then kept improving from their feedback. Regular conversations with the users rather than a frozen specification.

Applications people want to use

One of the applications was losing its users: raw Angular Material, very long forms, tabs inside tabs inside tabs. The problem was not a missing feature; the interface made you want to close the tab.

I replaced the nested tabs with a side navigation, which gives all the vertical space back to the forms, and rebuilt it on a new design system.

A sketch, not a screenshot: the application is internal. The nested tabs ate the height; the side navigation gives it back to the forms.

Building blocks shared, not copied

Every application handled its own connection to Microsoft Entra ID and to the LDAP directory, each in its own way. I designed and built a shared authentication service, and a JavaScript library to plug into it without knowing anything about Entra ID or LDAP. Today it serves R&D and the department’s applications, more than ten of them.

Applications go through the JavaScript library, which talks to the authentication service, itself connected to Microsoft Entra ID and the LDAP directory.Application AJS libraryApplication BJS libraryApplication CJS libraryAuthentication serviceMicrosoft Entra IDLDAP directory
An application only knows the library: Entra ID and LDAP stay behind the service.

Same logic for the other needs that kept coming back from one application to the next, such as PDF generation: one internal library, maintained in one place.

Pipelines rebuilt, not copied over

The migration from GitLab to Azure DevOps was the chance to start from scratch rather than translate the pipelines line by line. Every project follows the same path: tests, build, Docker image, then a script that starts the images on the AWS machines.

Bringing the teams along

A migration only holds if people follow. I organised and ran Git training sessions for around a hundred colleagues.

I also mentored an apprentice: splitting up the work, code reviews, signing off what was done.

Result

internal applications built and maintained
7
internal applications built and maintained
users a month after the redesign
150 → 250
users a month after the redesign
colleagues trained in Git
~100
colleagues trained in Git

What I would propose today

The in-house authentication service answered an internal request. Today I would push for something that already exists: Keycloak or Authentik. Less security code to write, and above all less to maintain. Authentik is, as it happens, what handles sign-in on my own cluster.

Homeg h
E.Leclerc (SIPLEC)
EssilorLuxottica
Fitex
Salon
Contactg c
See the CV
Copy the email address[email protected]y
Book a 30-minute call
Switch themet
Lire cette page en français
Show the shortcuts?
GitHubObstinateM
LinkedIn
Vesper++VS Code Marketplace

Keyboard shortcuts

Moving around

jk
Next, previous item
Enter
Open the selected item
hl
Previous, next project
-
Go up one level
g gG
Top, bottom of the page
g h
Home
g c
Contact

Actions

⌘ K/
Command palette
y
Copy the email address
t
Switch theme
?
Show this help