Étudiant en 3e année à l'ENSEIRB-MATMECA (Bordeaux INP) en filière informatique
spécialité génie logiciel.
À propos
Je rentre actuellement dans la dernière année de ma formation d'ingénieur en informatique à l'ENSEIRB-MATMECA, où
je me suis orienté vers le génie logiciel : conception, architecture, développement et mise en production
d'applications.
Mes centres d'intérêt vont du développement web et mobile full-stack à la cybersécurité, en passant par la
robotique et l'audionumérique et le réseau.
Mon projet le plus abouti est mon PFA du semestre dernier, Sécu'Cycle. C'est
une application web et mobile de calcul d'itinéraires cyclables sécurisés, aujourd'hui en ligne et ouverte au
public.
Projets
Les projets menés au fil de ma scolarité, du plus récent au plus ancien.
Sécu'Cycle calcule des itinéraires cyclables sécurisés à Bordeaux,
initialement sur la zone du campus universitaire mais désormais sur l'ensemble de la métropole bordelaise et ses
environs. Plutôt que de chercher le trajet le plus court, le moteur cherche le meilleur compromis entre sécurité
et temps de parcours, en tenant compte du type de vélo (dont les vélos à assistance électrique), de l'endurance
du cycliste et de ses préférences.
J'y ai travaillé sur l'ensemble de la chaîne, du cahier des charges au déploiement, en mettant focalisé
pricnipalement sur la partie frontend du site web et de l'application mobile native. Le graphe routier du projet
est construit à partir des données OpenStreetMap et de l'IGN, puis pondéré selon une dizaine de critères de
sécurité.
Recherche du trajet le plus sûr, avec plusieurs alternatives à comparer
Navigation guidée pas à pas avec synthèse vocale et un suivi en arrière plan, téléphone en poche
Signalements communautaires (accidents, travaux, obstacles) pris en compte dans le calcul et monitaurés
depuis un dashboard administrateur
Vélos enregistrés, adresses favorites, historique des trajets
Stack : FastAPI, PostgreSQL, Alembic, OSMnx et NetworkX côté back ; React, Vite
et MapLibre côté web ; React Native et Expo côté mobile ; un tableau de bord d'administration ; le tout
orchestré en Docker sur un VPS avec Coolify.
EIRBONE
Java · C · réseau
Application d'échange de fichiers pair-à-pair inspirée de BitTorrent : un tracker centralise l'annuaire des
pairs, qui échangent ensuite directement les morceaux de fichiers entre eux. Protocole applicatif conçu et
implémenté sur des sockets, avec gestion des seeders et des leechers.
Bibliothèque de threads utilisateur
C · systèmes d'exploitation
Implémentation depuis zéro de threads en espace utilisateur (green threads) à partir de
ucontext, exposant une API compatible pthreads.
Application qui joue du son en temps réel à partir du dessin de l'utilisateur, pour explorer la relation entre
musique et dessin. Le pavage affiché en fond n'est pas figé : il est construit à partir d'un fichier MIDI de
référence, dont on extrait la première note, la note la plus jouée et les deux intervalles les plus fréquents,
afin de placer cette première note au centre et de graduer les axes selon ces intervalles. L'utilisateur peut
ainsi rejouer le morceau de départ en se déplaçant de proche en proche, et découvrir d'autres sonorités via une
palette de couleurs où chaque teinte correspond à un instrument. Réalisé avec Pygame, NumPy et Mido.
Robot hexapode
Python · robotique
Contrôle d'un robot à six pattes, chacune dotée de trois degrés de liberté, soit dix-huit servomoteurs
Dynamixel à piloter. Le cœur du travail porte sur la cinématique inverse — convertir une position
cible du bout de patte en angles moteurs — puis sur la composition de ces mouvements en une démarche coordonnée.
Semestre 7 — 2e année, automne 2025
Free-Parking
Vue.js · Java · PostgreSQL
Application web de gestion de places de parking : interface Vue.js , API REST en Java avec
Javalin, et une base PostgreSQL exploitant vues, fonctions et déclencheurs.
Clical
Java · programmation orientée objet
Client de calendrier en ligne de commande : clical lit un flux iCalendar, puis affiche l'emploi du temps sur
une journée ou une semaine, au format texte, ICS ou HTML. L'analyse du format ICS comme la gestion des arguments
sont écrites entièrement à la main, sans bibliothèque tierce, l'objectif étant de mettre en œuvre encapsulation,
délégation, héritage et polymorphisme sur une conception documentée en UML. Tests JUnit avec mesure de
couverture.
Compilateur
C · Lex/Yacc
Compilateur d'un langage impératif conçu pour l'occasion, produisant du P-code : analyse lexicale et syntaxique
avec Lex et Yacc, table des symboles, puis génération de code.
Semestre 6 — 1re année, printemps 2025
Coursidor
C · théorie des graphes
Jeu de plateau à deux joueurs inspiré de Quoridor, où chaque pion doit rejoindre le bord opposé pendant que ses
adversaires posent des murs pour le bloquer. Le plateau est modélisé comme un graphe et le cœur du projet tient
dans la vérification qu'aucun mur ne condamne définitivement un joueur, ainsi que dans l'implémentation de
différentes stratégies.
Shell'da
TypeScript · programmation fonctionnelle
Jeu d'action (mini Zelda) bâti sur le modèle des acteurs, en TypeScript purement fonctionnel : joueur,
monstres, projectiles
et boucle de jeu communiquent uniquement par messages, sans état mutable partagé. Couvert par une suite de tests
Jest. Tout se passe dans le terminal avec terminal kit.
Semestre 5 — 1re année, automne 2024
Bourgade
C · jeu de plateau
Jeu de plateau automatisé inspiré de Little Town : les joueurs placent des employés sur un plateau en
tuiles pour extraire des ressources, construire des bâtiments et accumuler de l'or, en payant les salaires à
chaque tour. Implémenté en C modulaire avec plusieurs variantes de plateau (torique, voisinage à distance 2) et
une suite de tests unitaires.