Présentation

Je suis actuellement concepteur développeur d'application fullstack en recherche d'alternance. Je prépare un titre RNCP niveau 7 (bac +5) chez Diginamic. J'ai un an et huit mois d'expérience dans le domaine du développement Java / Angular pour mon centre de formation.
Mon aventure dans l'informatique commence par une passion pour la création de jeu vidéo, m'incitant à apprendre à coder malgré mon background littéraire. Souhaitant me professionaliser dans ce domaine, j'ai d'abord commencer en formation courte chez Diginamic. Content de ma prestation, ils m'ont permis d'obtenir une dérogation auprès de la région pour passer un titre RNCP niveau 6 malgré mon niveau bac littéraire, et m'ont également pris en alternance. Durant celle-ci, j'ai pu développer des applications permettant aux apprenants de Diginamic de s'organiser pour leur recherche d'alternance. Le nom de ces applications sont Digicap et Digicap V2. J'ai aussi pris l'intiative de créer un LMS (Learning Management System) pendant un interprojet.
En tant que passionné de code, j'ai également pu créer un grand nombre de projets personnels ou pour des amis, que vous pourrez retrouver dans la section projet de ce site.

Mes projets

Digicap

Application développée pour le centre de formation Diginamic. Elle a pour but d'aider les stagiaires en recherche d'entreprise à organiser leurs candidatures en les consignant dans un tableau kanban, et en facilitant les échanges avec la chargée de suivi, Aurélie Leforestier.
Celle-ci offre donc un tableau kanban, une messagerie instantanée, une option permettant de téléverser son CV et de le faire valider par Aurélie, ainsi qu'un système de notification permettant d'inciter les stagiaires à relancer les entreprises pour lesquelles ils ont postulé il y a plus d'une semaine.
Ce projet a été fait en étroite collaboration avec Lucas Préaux, l'autre développeur du projet, et Valentin Momin, notre chef de projet fonctionnel.
capture d'écran du tableau kanban de l'application
Prototype de LMS (Learning Management System) développé seul lors d'un interprojet chez Diginamic. Le but était d'offrir une plateforme personnalisée pour les cours dispensés en e-learning.
Elle offre la possibilité de créer des cours au format markdown, de les mettre en ligne, de les organiser en module, que l'on peut lier à différentes formations. Elle offre également un forum, une messagerie instantanée et un utilitaire pour créer et faire passer des QCM. Côté apprenant, la plateforme permettait également d'organiser son emploi du temps avec un calendrier des cours, et possédait un système de favoris, ainsi qu'une option pour poser des questions spécifiques sur chaque chapitre d'un cours et obtenir des réponses de ses camarades.
Le projet n'est pas totalement terminé, mais prévoyait également d'implémenter des fonctionalités comme uns système façon coding-games pour les TPs, un lien avec un ChatGPT pré-prompté pour en faire une sorte de tuteur virtuel, et un système de progression gamifié.
capture d'écran du site présentant une interface d'administration

Digicap V2

Cvthèque pour les apprenants en recherche d'entreprise de Diginamic.
Celle-ci permet la consultation libre des différents profils de nos apprenants, sans toutefois dévoiler au premier abord leur identités et leurs informations de contact. Ces profils ont globalement les mêmes caractéristiques que les profils linkedin, avec une vidéo de présentation en plus.
Les personnes souhaitant contacter les apprenants peuvent ensuite se connecter avec Linkedin pour consulter le profil complet.
capture d'écran du site présentant une modale avec une vidéo sur un projet développé par Harmony
Site vitrine utilisée par une amie du nom de Harmony Philadelphe pour présenter à son examen de graphiste
Elle m'avait produit des maquettes sur Figma, et j'avais utilisé cette base pour mettre en ligne un site vitrine sur github pages.
Étant donné que le projet a du être fait en urgence (les dernières maquettes sont arrivées deux jours avant la deadline) et que je n'avais pas de maquette pour la version mobile, le site n'est pas responsive.
capture d'écran du site présentant une modale avec une vidéo sur un projet développé par Harmony

Nodzcript

Javascript n'avait rien à voir avec Java. Nodzcript n'aura donc rien à voir avec Node.
Projet un peu trop ambitieux et chronophage de création d'un framework Java permettant de bootstrap une application Spring-boot / Thymeleaf / HTMX / Tailwind.
Globalement, l'idée était la suivante : Shadcn-UI, mais avec le back en plus du front, et un système proche des librairies de go plutôt qu'un dépôt centralisé de composants.
Grâce aux principes de fragment de Thymeleaf, et à la philosophie "Locality of Behaviour over Separation of Concerns" de Tailwind et HTMX, ce framework devait permettre de mettre en ligne son projet sur Github, et moyennant la création d'un fichier de configuration via un outil vérifiant également la conformité de l'architecture aux exigences du framework, permettre à toute autre personne de venir récupérer des composants pour venir les intégrer à sa propre application web.
Il devait ainsi intégrer un utilitaire de génération de projets, un système permettant de personnaliser les classes de cette création de projet, un CLI de génération de boilerplate semblable à celui de Angular, un "component-manager" capable d'aller chercher des composants dans des dépôts git, et un LSP permettant d'avoir de l'autocomplétion pour thymeleaf dans Nodzcript.
Le projet est pour l'instant en suspend, étant donné qu'il est extrêmement chronophage et qu'il ne me rapportera pas grand chose.
page d'accueil de Nodzcript après la création d'un app

Dernier souffle

Dernier souffle est un survival-horror / jeu de rôle au tour par tour où le but est de mener une équipe d'explorateur dans une expédition pour fermer la porte des enfers. Face au stress, à la maladie, aux blessures, au manque de nourriture, au rapport de force largement défavorable pour l'équipe face à n'importe quel démon qu'elle croise, le joueur devra redoubler d'ingéniosité et de détermination pour parvenir à triompher de l'adversité.
Ce jeu prend ses inspirations de diverses sources, aussi bien vidéo-ludiques que littéraire. Bloodborne, Shin Megami Tensei III et IV, Shingeki no Kyujin, Berserk, La horde du contrevent, Les sentiers de la gloire, Gen d'Hiroshima, Akira sont autant d'oeuvres ayant inspiré ce projet.
Étant donné que cela prend énormément de temps, j'ai pour projet de produire une démo jouable d'ici 2026.

Générateur de SQL

Utilitaire m'ayant permis de générer une grande quantité de données de test pour l'application Digicap V2
Voici ses fonctions :
Il permet de créer le code de base pour un certain nombre de classes Java. Cela inclue les controllers, les dtos, les repositorys et les mappers, mais également les enums, les interfaces, les records...
Il permet de créer la structure de base d'un projet Spring Boot en définissant le nom des classes et leurs champs dans un fichier de configuration à partir d'une ligne de commande.
Il permet de créer des interfaces typescript correspondant aux données envoyées par le back en analysant le code des Dtos pour en déduire la structure des interfaces typescript
Il permet de créer des services typescript correspondant aux points d'entrées de l'application back en analysant le code des controllers du back

Grammaire tree-sitter pour Thymeleaf

Thymeleaf est un moteur de templating pour Java, similaire à ce que peut être Twig pour PHP. Tree-sitter, de son coté, est un framework d'analyse syntaxique, permettant de découper des fichiers de code en un arbre où chaque noeud représente un élément syntaxiquement signfiant pour le code. C'est notamment l'outil utilisé par neovim pour faire de la coloration syntaxique.
Créer cet outil était à la fois fait pour moi une question d'apprentissage et une étape d'un plus grand projet: le framework web Nodzcript. Celui-ci utilise le moteur de templating thymeleaf pour créer du HTML. Or, il n'existe pas de serveur LSP pour ce type de fichier. Mon but a donc été d'en créer un. Et pour cela, il me fallait un moyen d'analayser le code thymeleaf pour pouvoir proposer de l'autocomplétion. Pour cela, j'ai donc décidé de créer une grammaire tree-sitter.

Tree sitter query builder

Comme précisé précédemment, Tree-sitter est un outil d'analyse syntaxique du code.
Pour mon projet de LSP, j'avais besoin de faire appel à tree-sitter dans un programme en go pour analyser la structure de fichiers thymeleaf ainsi que de fichiers java. Ensuite, j'avais besoin de chercher à l'intérieur de ces fichiers les éléments permettant de générer de l'autocomplétion. Par exemple, je voulais pouvoir récupérer tous les attributs d'une classe, et à l'intérieur de ces classes, récupérer le type de chaque attributs, pour ensuite aller chercher ses attributs et méthodes. Cela peut vite devenir très verbeux avec la librairie permettant de lier le projet tree-sitter au langage go.
De ce fait, j'ai donc décidé de créer une abstraction permettant de faciliter la création des requêtes tree-sitter dans un programme en go. Celui-ci utilise des algorithme de parcours de graphes comme le "Breadth First Search" et le "Depth First Search".

Nodzcript LSP Server

Le but de ce projet était de proposer un outil d'autocomplétion pour le framework Nodzcript.
Le LSP est un standard développé par Microsoft permettant à des logiciels (serveur LSP) de communiquer avec des éditeurs de texte implémentant les spécifications d'un client LSP. Celui-ci, après analyse des différents fichiers sources, peut ainsi proposer des suggestions d'autocomplétion, et effectuer des actions comme aller à la définition d'une variable.
Sur le papier, il suffit donc de créer des fonctions capables d'analyser les variables disponibles pour l'autocomplétion dans le contexte où l'utilisateur de l'éditeur de texte est en train d'écrire, qui renverront par exemple une liste de variables et de méthodes disponibles.
En pratique, cela demande un choix d'analyseur syntaxique, la création d'une grammaire pour thymeleaf, des choix sur ce qui est stocké en mémoire et ce qui est récupéré lors d'une analyse à la volée des fichiers Javas, etc. Cela m'a pour l'instant demandé de créer une grammaire, fork une librairie go pour y intégrer cette grammaire, créer une librairie pour rendre plus aisée l'utilisation de la première, bref, il s'agit d'un des projets les plus ambitieux et difficiles que j'ai pu entreprendre.

Spring-go

Utilitaire en ligne de commande de génération de code pour les stacks Spring Boot / Angular
Voici ses fonctions :
Il permet de créer le code de base pour un certain nombre de classes Java. Cela inclue les controllers, les dtos, les repositorys et les mappers, mais également les enums, les interfaces, les records...
Il permet de créer la structure de base d'un projet Spring Boot en définissant le nom des classes et leurs champs dans un fichier de configuration à partir d'une ligne de commande.
Il permet de créer des interfaces typescript correspondant aux données envoyées par le back en analysant le code des Dtos pour en déduire la structure des interfaces typescript
Il permet de créer des services typescript correspondant aux points d'entrées de l'application back en analysant le code des controllers du back

Gestionnaire d'absences

Application web permettant à employés, managers et administrateurs de gérer les absences en entreprise.
Voici ses fonctions :
Il permet aux employés de remplir un formulaire pour créer une demande d'absence. Le serveur vérifie ensuite certaines règles concernant ces demandes avant de l'insérer en base de données.
Il permet aux employés de visualiser leurs demandes d'absences, validées ou non, ainsi que les jours fériés et les rtts employeurs.
Il permet aux managers de visualiser les demandes d'absences des employés de leur département, et des les valider ou non.
Il permet aux administrateurs de choisir si les jours fériés sont travaillés ou non, et des poser les RTTs employeurs.
Contributeurs :
Wilk Arnold, Goertz Juliette, Ciccoli Abel

Open Food Facts

Application en ligne de commande permettant de récupérer un fichier CSV d'informations sur les valeurs nutritionnelles de différents aliments pour les stocker en base de données.
Le fichier étant un export de données remplies à la main par des utilisateurs, cela a demandé de créer un lecteur et un analyseur de texte permettant de supprimer les caractères inutiles.
Le fichier étant particulièrement volumineux, le but était d'optimiser le plus possible le temps de traitement du fichier Pour cela, j'ai utilisé des techniques de traitement de texte caractère par caractère inspiré des compilateurs pour éviter l'utilisation des regex lentes et des copies de chaines de caractères coûteuses en mémoire et en utilisation du processeur. J'ai également fait appel aux Virtual Threads de Java 20, et aux pools de connections ainsi qu'à l'insertion multiple et la création d'un cache à base de hashmaps.
L'objectif de 35 minutes pour traiter le fichier a donc été largement dépassé, avec un temps de traitement durant entre 10 et 20 secondes.

Holdem-Calc

Utilitaire en ligne de commande permettant de calculer une approximation de l'équité d'une main au texas Hold'em en 1 contre 1.
Le but de cette application était de m'entrainer au Java avant la formation chez Diginamic, bien qu'elle ait été un peu retravaillée par la suite. La comprendre nécessite d'avoir quelques notions concernant les règles du poker.
Au poker, on reçoit à chaque tour deux cartes, et l'on essaie d'obtenir la meilleure combinaison possible de cinq cartes avec des cartes communes à la fin du tour. Au début, on ne connait pas les cartes communes. Toutefois, certaines mains ont plus de chances de gagner que d'autres. Le but de l'application est de calculer ces chances.
Pour cela, il a fallut modéliser les règles du poker et implémenter un algorithme qui distribuait des cartes au hasard un grand nombre de fois, puis vérifiait qui gagnait entre deux mains. Ensuite, on faisait une moyenne du nombre de victoires par rapport au nombre de coups joués, et l'on obtenait l'équité de la main.

Portfolio

Site servant une simple page HTML dont le but est de me servir de portfolio en ligne tout en m'apprenant à utiliser Tailwind.
Oui c'est bien de ce site dont je parle.
Le but était de réussir à faire un site web responsive sans utiliser le moindre framework JavaScript, comme à mes débuts.

Aide aux apprentis

Application à but collaboratif permettant à toutes les personnes d'une session de résumer des cours et de les partager entre eux.
L'idée était d'utiliser un framework de création de documentation pour que les étudiants puissent se partager des cours, écrire des articles de blog, etc.
L'idée n'a pas forcément très bien marché. Le rythme de la formation étant soutenu, ils n'avaient pas forcément de temps à consacrer à apprendre un nouveau framework, mais le site est toujours en ligne.
Contributeurs :
Preaux Lucas, Ciccoli Abel

L'enquête de M. White

Clone sans pub de l'application undercover, en tant qu'application web à faire tourner sur son propre serveur.
Mon premier projet web.
Le principe est le suivant : on fait tourner l'application sur serveur d'un ordinateur connecté au wifi, puis on s'y connecte par un téléphone lui aussi connecté au wifi.
Ensuite, l'application est faite de telle sorte à permettre de suivre les règles du jeu Undercover.
Enfin, le repo de l'application s'appel code names, pour une raison qui m'échappe, mais je laisse pour la postérité.

Mes compétences

Back end

Front end

Applications client

Mobile

Outils de développement

Mes expériences

logo diginamic

Diginamic

décembre 2022 - ce jour
J'ai commencé en décembre 2023 une préparation à l'emploi collective (POEC) financée par l'état et délivrée par Diginamic. Après trois mois intenses couronnés de succès, il m'ont permis de continuer chez eux pour obtenir un Bac + 3/4 concepteur développeur d'applications, que j'ai obtenu en septembre. Tecken, une entreprise en étroite collaboration avec Diginamic, m'a pris en alternance. J'ai ainsi pu faire de la maintenance évolutive de leur application de gestion d'entreprise, et créer une application de suivi des stagiaires. Je continue actuellement avec eux pour une formation vers un bac +5
logo diginamic

Tecken

avril 2023 - octobre 2024
J'ai commencé le premier avril 2023 un alternance dans l'entreprise Tecken, au service de Diginamic. C'est ici que j'ai fait de la maintenance évolutive du SID (Système d'Information Diginamic) et que j'ai co-réalisé l'application de suivi des stagiaires. J'ai enfin terminé en octobre 2024 mon alternance, après avoir mis en préproduction la cvthèque de Diginamic.