Tous mes projets

Projets mis en avant

Projets informatiques

API web: Testeur et simulateur

Il s'agissait de faire un testeur de bout en bout grâce à un simulateur associé et également réalisé pour le projet ci-dessous.

Software Engineer

Environnement

C#
JSON
HTTPS
Windows
Visual Studio

API web: Communication inter-entreprises

Ce projet s'appuie sur les deux projets ci-dessous. Il s'agissait d'ajouter une API web standard sur une API réseau interne.

Software Engineer

Environnement

C#
JSON
HTTPS
Windows
Visual Studio

Librairie C#: Conversion de messages binaire ↔ JSON

Il s'agissait de corriger et refactorer une librairie C# qui permettait de manipuler et particulièrement de convertir un message au format interne au format standardisé JSON afin de pouvoir communiquer ultérieurement avec des partenaires. Les difficultés étant qu'il n'y avait pas d'outil mature de débogage pour le format interne, et que le code original était de la programmation spaghetti, ce que j'ai corrigé en orienté objet. Cela a permis une gestion propre et quasi sans bug de la manipulation des messages.

Software Engineer

Environnement

C#
JSON
Windows
Visual Studio

API réseau: Exposition de fonction interne

Il s'agissait de corriger et mettre en place le chiffrement TLS sur une ébauche. Ce refactoring inclut notamment la logique asynchrone de gestion des clients, qui en fut une partie majeure.

Software Engineer

Environnement

C#
Asynchrone
Windows
Visual Studio

Application web: Radio I|O

J'ai participé à une start-up de streaming de radio en cours de développement. J'ai eu un rôle polyvalent dont du consulting cloud et multimédia pour le traitement et la distribution efficace du son.

Consultant

Environnement

Dash.JS
CSS3
HTML5
Tailwind.CSS
Svelt.JS
Shell
Docker
Docker Compose

Site web: Ce portfolio

Celui-ci démontre mes différentes compétences. Il partage la même base de code que la version 4 de Libre LGBT qui est encore en développement.

Launcher: Jeux vidéos Tremulous & variantes

Travail en cours

Launcher réalisé sur un backend Rest et une interface Web grâce au framework Tauri. Son objectif est d'apporter une gestion simplifiée des différents forks du jeu, et mettre en commun les différentes configurations ainsi que les cartes de jeu.

Médias

Logiciel: Music2DMX

Lecteur de musique de DJ avec Lightjockey automatique. Il s'agit concrètement d'un projet qui contrôle une des projecteurs prédéfinis (deux spots RGB + un derby) par rapport à une musique choisie sur le volet, à travers le protocole DMX. Il a été réalisé pour mon usage personnel ; le code est privé. Un aperçu graphique de la musique en cours est de plus fourni.

Application web: Libre LGBT v4

Travail en cours

La future version de Libre LGBT a été démarré. Elle a pour objectif d'être bien plus indépendant des infrastructures tiers. Par cela, on entend qu'elle n'utilisera plus les courriels pour valider les comptes, et qu'elle sera décentralisée, lui permettant de continuer à fonctionner même lors d'attaques DDOS. Pour ce faire, j'ai choisi la base de données décentralisée en pair à pair GunDB, combinée avec un front React.JS et MUI, sur une base de framework Next.JS.

Médias

42: ft_Transcendence

Réseau social autour du jeu Pong, revisité en 3D.

Game Developper

Tâches affectées

Tout le jeu : - La logique du jeu dont : - La synchronisation Client/Serveur indépendante du ping - Mise en pause et interruptions - Mode spectateur - Physique de la balle: - Rebondissement selon la zone de contacte de la raquette - Consistance peu importe le ping - Animation en sortie de zone de jeu - Scores - Warmup - Matchmatching selon différents critères - Carte 3D animées configurables dont : - Taille de la zone de jeu - Vitesse de la balle - Taille des raquettes - Contrôles autorisés - Position des scores et des avatars - Positions de la caméra - Matériaux de la zone de jeu - Effet 3D - Arrière plan 3D - Implantation des cartes : - Forest: Une carte pour débutant - Classic: Une carte fidèle au jeu original - Synthwave: Une carte pour un niveau avancé - Différents contrôles: Curseur, Molette, Clavier - Transition de la caméra - L'interface du jeu dont : - Status: Score, Avatar de l'adversaire, Warmup, ... - Paramètres 3D et paramètres du jeu - Mise en pause - Abandon du jeu - Des interfaces de l'application web relatives au jeu dont : - La liste des parties réactive - La page de matchmatching - Status en jeu dans le menu de l'application Tâches réassignées : - Responsivité de l'application - Layouts réutilisables - Peaufinage de l'interface générale de l'application

Points positifs

Utilisable sur GPU médiocre. Jeu relativement complet et bien testé.

Inconvénients

Rendu énergivore sur CPU.

Environnement

Vue.JS
Three.JS
Quasar
Vite.JS
Socket.IO
REST
Axios
Nest.JS
PostgreSQL
Shell
Nginx
Docker Compose
Ubuntu Server

42: ft_WebServ

Serveur web C++ à la Nginx, réalisé sous forme de middleware, from scratch. Avec lecture / écriture de fichier, et CGI. Hautement configurable, et code facilement extensible. Benchmarké et validé par le testeur facultatif fourni.

Software Developper

Tâches affectées

Le cœur du projet : - L'API d'architecture en middleware - Une grande partie de la logique principale définie par la configuration - Les middlewares de parsing des requêtes HTTP - Les middlewares de réponses HTTP - La gestion d'asynchronicité de la lecture et d'écriture avec epoll - La gestion des sockets et de la concurrence - Le traitement en parallèle des requêtes - La fonctionnalité keep-alive du HTTP 1.1 Quelques middlewares applicatif : - Les middlewares de service statique (lecture) dont : - La lecture d'un dossier - La lecture d'un fichier, avec détection du mime-type - Le service d'upload

Points positifs

Très modulable avec sa conception en middleware inspiré de Node.JS, stable.

Environnement

C++
Ubuntu

42: ft_Containers

Les conteneurs C++98 from scratch, en language C++98, avec leurs itérateurs respectifs.

C++ Developper

Tâches affectées

L'intégralité du projet comprenant les containers : - map - set - vector - stack Leurs itérateurs, itérateurs constants, itérateurs inversés, itérateur inversés constants, suivant une architecture : - De simple array (vector) - De red-black-tree (map) Tous les tests associés, en s'assurant de la conformité avec le standard C++98 des containers originaux. Ceci inclus les leaks, les performances, et les fonctions non membres. Quelques annexes comme std::pair

Points positifs

Réalisé d'une manière extensible en suivant la philosophie DRY.

Environnement

C++
Ubuntu

42: ft_Push_Swap

Un exercice sur la complexité.

42: ft_Philosophers

Une approche du threading une fois avec les mutex, une fois avec les sémaphores. Le projet est inspiré du problème original du même nom.

42: ft_MiniShell

Un shell allégé, from scratch.

42: ft_Services

Mes propres conteneurs Docker basés sur Alpine Linux, déployés sur Kubernetes, et routés avec MetalLB.

42: ft_LibASM

Une librairie écrite en assembly. Elle contient une fonction atoi personnalisée acceptant un nombre dans une base donné.

42: ft_Cub3D

Jeu avec rendu en raycasting, en language C. Inspiré du concept du premier FPS : Wolfenstein. From scratch.

Software Developper

Tâches affectées

L'intégralité du projet : - Rendu en raycasting optimisé - Différentes textures - Optimisations diverses : - Clipping - Profilling avec gprof - Optimisation du code C à partir du code Assembly - Gestion cohérente des contrôles clavier et souris - Physique élémentaire En bonus : - Déplacement de la vue vertical possible - Saut / Déplacement accroupi - Portes avec ouvertures animées - Canal alpha - Sprites animées et collectibles - Passages secrets

Points positifs

Fortement profilé et optimisé

Inconvénients

Bonus contraignant sur les performances

Environnement

C
MiniLibX

Médias

Jeu vidéo: Fork de Tremulous

Amélioration d'un jeu Open-Source à travers mon fork. On y retrouve notamment une refonte de l'interface en HD, un nouveau système de police d'écriture dont une par clan, et le support du gamepad. Toutes ces modifications sont amenées à être ajoutée sur le jeu StellarPrey de la communauté GrangerHub.

42: ft_Server

Une approche de la conteneurisation avec Docker.

42: ft_Printf

La fonction printf from scratch, recopiant les comportements indéfinis de MacOS.

42: ft_Get_Next_Line

Une fonction pour lire un file descriptor, ligne par ligne. Interdiction de lire plus que nécessaire (lseek est interdit). La taille de tampon est configurable.

42: FlipScreen (GameJam)

Sur le thème imposé, You are the final Boss, j'ai proposé un jeu vidéo réalisé en deux jours. Le vrai joueur se trouvant du côté du Boss, les contrôles ont été permutés. Il a été fait avec la librairie JavaScript Phaser.

42: LibFT

La librairie initiale pour les prochains projet de l'école. On y retrouvera notamment des fonctions unix, réécrites from scratch.

Présentation web: L'école 42

Présentation web de l'école 42 réalisée pour la journée des anciens.

Borne interactive personnalisable

Borne de quiz et de présentation vidéo configurable. Elle a été réalisée sur du matériel de récupération et un RaspberryPi. Celle-ci a été exploitée Musée de la 2 CV à Troisfontaines.

Software Developer

Tâches affectées

Toutes les parties software du projet : - Développement de l'interface sur Electron : - Interface d'accueil configurable - Lecteur vidéo configurable - Quiz multiples configurables - Leaderboard - Installation et configuration du système : - Calibration manuelle de l'écran tactile - Verrouillage sur l'application (absence d'interface graphique système) - Gestion des plantages avec redémarrage automatique

Points positifs

Environnement d'exécution optimisé

Inconvénients

Mises à jours du software manuelles

Environnement

Electron
React
Material-UI (MUI)
Shell
JSON
ArchLinuxArm
RaspberryPi

Application web: Libre LGBT v3

Réalisation complète et administration d'un réseau social réactif. Bénévolat. Il a été faite pour être rapide, et en parallèle de mes études en CPGE TSI. Cette section concerne uniquement le développement de la version 3.

Fondateur / Développeur

Tâches affectées

L'intégralité du projet. On a du côté technique : - Choix des solutions techniques - Développement et mise en ligne, dont la programmation : - D'un système de souscription aux données réactive - Traçage du status en ligne - Chaîne de traitement d'image pour les photos de profil avec ImageMagick - Création initiale d'un système de notification Push et courriel. - Mise en place d'une application Android (Trusted Web Activity) - Protections XSS - Accessibilité aux malvoyants On a également : - Identité graphique - Animation du logo - Animation SVG de présentation - Référencement SEO et marketing passif

Points positifs

Légé, Responsive, Installable (PWA), Accessible

Inconvénients

Vieillissante, Minimaliste, Technologies instables

Environnement

Preact
Blaze.CSS
Feather.JS
Node.JS
Socket.IO
MongoDB
JSON
SVG
Nginx
Docker Compose
Ubuntu Server

Médias

Localisation: Marche piétonne connecté

Projet des concours de la CPGE TSI. L'idée est de fournir des panneaux directionnels dynamiques selon la destination souhaitée par l'utilisateur. La destination sera alors dynamiquement inscrite sur une flèche pré-orienté, par la présence de l'avatar de celui-ci, permettant l'usage concourent à plusieurs utilisateurs.

Robot «fil d'Ariane»: Rex

Un robot de concours programmé en sept jours pour sortir d'un labyrinthe. J'ai été le seul candidat proposant un algorithme auto-alignant le robot sur les cases. Cela m'a donné un avantage considérable lorsque le labyrinthe était connu quelques minutes à l'avance, me permettant de programmer mon robot avec des instructions de direction simples. J'ai aussi été le seul à utiliser la LED RGB du robot pour indiquer ses status (en attente de lancement, calibration, en course, terminé). Un algorithme de base suivant la cloison de droite a aussi été développé. J'ai utilisé le capteur de distance ultrason fourni pour regarder, à chaque ouverture se situant la droite de la course du robot, s'il y a des sous-ouvertures, plutôt que de systématiquement rentrer dans celle-ci. Cela m'a fait gagner un temps considérable en compétition.

Médias

Robot éducatif: Coccino

Projet de mon baccalauréat STI2D. Le projet a été amené à son terme et est fonctionnel. Toutes les images relatives au projet présentent dans la présentation ont été réalisées par mes soins, sur le logiciel Inkscape.

Site web: Présentation de mon fork de Tremulous

Site web présentant mon fork bénévole, respectant le thème de celui-ci, lui-même inspiré du thème du jeu original Tremulous.

Projets annexes

Photographie: Ma photo de profil

Photographie amateur réalisée avec mon matériel personnel. Développée avec Darktable.

Médias

Logo: Libre LGBT v4

Logo de la future version majeure de Libre LGBT. Il s'inspire du précédent, avec un rendu plus sophistiqué.

Médias

Logo: Bastien ADAM

Mon logo personnel, retrouvable sur mes personnalisations.

Médias

Shader: Électronique Sci-Fi

Shader réalisé sur une base de bruit Voronoï et la fonction distance de Tchebychev. Il a pour vocation d'être utilisé sur ma refonte du modèle du réacteur du jeu vidéo bénévole StellarPrey / Tremulous.

Médias

Modèle 3D: Refonte d'artéfact du jeu Tremulous

Modèles réalisés sur le logiciel Blender et textures réalisées sur Substance Painter Student Edition. Ces artéfacts ont pour vocation à être intégrés dans le jeu vidéo bénévole StellarPrey, dont le moteur de jeu est encore en développement.

Projet: Libre LGBT

Libre LGBT est un réseau social LGBT+. Totalement gratuit, il comporte un forum, un t'chat et une carte interactive. Il fait partie de mes plus gros projets, mais a une particularité majeure : il y a eu beaucoup de versions différentes développées dans le passé. En commençant par PHP, finissant avec Next.JS, et passant par Meteor.JS, c'est le projet sur lequel j'ai le plus appris en pratiquant sur le domaine du web.