Alexandre Wenkin

Experience and projects

Two assignments at EPC Familia, this portfolio, then three school projects built in teams: a web and mobile app, an online shop and a desktop application.

Professional experience

Confidential
Internal company project

SAMI

Final-year internship · EPC Familia · Feb.–May 2026

IT monitoring platform for a network of 102 pharmacies: tested REST API (JUnit, Mockito), monitoring probes configurable without redeployment, Microsoft Teams alerts, JWT authentication and automated deployment.

JavaSpring BootGroovyVue.jsPostgreSQLJUnitDockerJenkins
Private code
In detail

SAMI

Final-year internship · EPC Familia · Feb.–May 2026

Background

EPC Familia runs a network of 102 pharmacies. To monitor its infrastructure, the IT team had to juggle several separate tools (Centreon, Jenkins...) with no quick overall view, and some business-specific checks were not covered by any tool.

SAMI (an IT alerting and monitoring layer) does not replace these tools: it gathers their information and adds its own checks, on two screens permanently displayed in the IT office. On the left, a grid of colour-coded services (green, orange, red); on the right, the probes of the selected service in detail.

What I built

I developed the application end to end, from analysis to deployment:

  • a Spring Boot REST API with a PostgreSQL database, covered by JUnit and Mockito tests;
  • the Vue.js interface on two synchronised screens, updated in real time with WebSockets;
  • Microsoft Teams alerts for critical failures, with filters to avoid spam (office hours, weekends, no more than one alert every 5 minutes);
  • authentication against the company directory with JWT tokens, and encryption of the passwords and keys stored in the database;
  • deployment in Docker containers, automated with Jenkins pipelines, including database backups.

The key technical decision: probes without redeployment

At first, each type of probe (ping, API call, SQL query...) was a Java class. Adding a new probe therefore meant changing the code, recompiling and redeploying the application.

I replaced this with a single engine: each probe is a small Groovy script stored in the database and run in a secure sandbox (dangerous instructions, such as starting a program or reading a file, are forbidden). A new probe is now created from the admin interface, and the script is tested before it is saved.

Measuring before choosing

To schedule the probes, I compared three strategies (one global scheduler, one per service, one per probe) by measuring memory, threads and CPU with 100 probes. All three handled the load: I chose one scheduler per probe, so that each probe keeps its own frequency (some every 30 seconds, others every 5 minutes). The Strategy pattern makes it possible to switch strategies without touching the rest of the code.

Outcome

By the end of the internship, more than 150 probes were running in production, critical outages triggered an alert in Microsoft Teams, and the IT team had an overview of its infrastructure. A user manual and a technical manual come with the tool, to make it easier to adopt and maintain. Today, SAMI is used every day by EPC Familia's IT team, and it is set to be rolled out to other departments.

This project is documented in detail in my bachelor's thesis.

Confidential
Internal company project

Oracle to PostgreSQL migration

Student job · EPC Familia · June–Aug. 2026

Migrating Oracle databases to PostgreSQL with Ora2Pg, adapting Spring Boot microservices and Spring Batch jobs to the new database, rewriting PL/SQL business logic in Java, and validating the migrations in production.

OraclePostgreSQLJavaSpring BootSpring Batch
Private code
In detail

Oracle to PostgreSQL migration

Student job · EPC Familia · June–Aug. 2026

Background

After my internship, EPC Familia hired me as a student to take part in migrating its Oracle databases to PostgreSQL. The migration is carried out one business domain at a time, without interrupting the applications the pharmacies use every day.

What I did

  • Migrated the structure and data of seven business domains with Ora2Pg; four of them went into production during my contract.
  • Adapted Spring Boot microservices and Spring Batch jobs so that they read from and write to PostgreSQL.
  • Rewrote in Java some business logic that lived in the Oracle database (PL/SQL procedures), to make the applications independent of the database.
  • Wrote unit tests (JUnit, Mockito) before any test against a real database, then validated each migration in the test environment before going to production.

My method, for each domain

  • Read the code of the applications that use the tables, so as not to miss any.
  • Configure Ora2Pg: type conversions, choice of tables and columns to copy.
  • Create the tables and copy the data in the test environment, then check the result.
  • Adapt the Java code, test it, then prepare the production release with the technical lead.

What I took away

This job taught me to work in a large existing codebase I had not written, to check the code rather than assume, and to move carefully when production data is involved.

Personal project

Portfolio home page

This portfolio

Personal project · 2026

The site you are visiting: bilingual French / English, contact form protected against CSRF and spam, security headers, automated tests with Vitest and automatic deployment on Vercel.

Next.jsReactTypeScriptTailwind CSSVitestVercel
In detail

This portfolio

Personal project · 2026

What I built

  • two languages (next-intl): every page exists under /fr and /en;
  • a contact form that sends an email (Resend), with server-side validation, CSRF protection and a trap field against bots;
  • security headers (Content-Security-Policy, HSTS...);
  • Vitest tests and GitHub Actions continuous integration (lint, types, tests, build) on every push;
  • automatic deployment on Vercel, with a sitemap and structured data for search engines.

School projects

Back office: list of vehicles

car-rental-platform

School project · Henallux

Car rental platform: secure REST API (JWT, Argon2), React web back office and Key2Go mobile app in React Native.

Node.jsExpressPrismaPostgreSQLReactReact NativeDocker
View code
Demo

car-rental-platform

Web back office (React)

Back-office login pageList of vehicles with edit and deleteList of user profiles

Key2Go mobile app (React Native)

Key2Go login screenList of rental offersMap of available vehicles in NamurMy current bookingsRental historyUser account page

Videos

Web back office (React)
Key2Go mobile app (React Native)
Home page of the online bookshop

eShop-BookStore

School project · Henallux

Online bookshop: multilingual catalogue, cart, PayPal payment and administration. Focus on security: Spring Security, BCrypt, protection against CSRF and XSS, hardened headers.

JavaSpring BootSpring SecurityJPAJSPPostgreSQLDocker
View code
Demo

eShop-BookStore

Online bookshop (Spring Boot, JSP)

Bookshop home pageProduct catalogueCart open in a side panelOrder summary and PayPal payment

Videos

Online bookshop (Spring Boot, JSP)
User management in the application

library-management-swing

School project · Henallux

Desktop application managing the Namur library network (members, books, loans): layered architecture, passwords hashed with PBKDF2, JUnit unit tests.

JavaSwingMySQLJDBCJUnitDocker
View code
Demo

library-management-swing

Desktop application (Java Swing)

Home screen and menusUser management (add, edit, delete)Searching an author's books in a libraryStatistics: most-read authors over a period

Videos

Desktop application (Java Swing)