Hedi Bannour

Hedi Bannour · ingénieur produit IA et fondateur

Je construis des produits d'IA. Ce site en est un.

Le robot à droite, c'est Player 2. Il a commencé à apprendre le tennis de table quand vous avez ouvert cette page, et il répond aux questions sur moi. Jouez contre lui, ou interrogez-le.Le robot ci-dessous, c'est Player 2. Il a commencé à apprendre le tennis de table quand vous avez ouvert cette page, et il répond aux questions sur moi. Jouez contre lui, ou interrogez-le.

  • MaintenantIngénierie logicielle à Epitech, France, promotion 2028. Stage chez SN Perfect.
  • EnsuiteCal State San Marcos, Californie : du 18 janvier au 13 août 2027
  • ObjectifRencontrer des fondateurs et des équipes d'ingénierie qui construisent avec l'IA
Demander à Player 2

Jouez contre Player 2, mon IA

Pilote auto 0 : 0 Player 2

Passez la souris sur la table pour jouer

Player 2 a 00:00. Niveau : nouveau-né

Player 2 est né quand vous avez ouvert cette page. Personne ne lui a appris le jeu : il apprend en s'entraînant seul, 0 balles jusqu'ici. Au début, il est nul. Laissez-lui 20 secondes. Le premier à 3 gagne.

Player 2 est un réseau de neurones à 57 poids : 5 entrées, 8 neurones tanh, 1 sortie pour la vitesse de la raquette. Il s'entraîne dans votre navigateur avec la méthode de l'entropie croisée : 16 candidats par génération, les 4 meilleurs définissent la suivante. Aucun jeu de données, aucun serveur.

Génération
0
Renvois d'affilée
0.0 / 20
Balles d'entraînement
0

Les animations réduites sont activées, donc les jeux vous attendent : cliquez ou touchez un écran pour le lancer.

3entreprises lancéesJournal de fondateur55cabinets médicaux interrogés sur le terrain pour l'une d'ellesTabeebi5stages, dont deux en IAExpérience33projets, dont 14 jouables sur cette pageProjets

Interrogez Player 2 sur moi

Il répond uniquement à partir des fiches de ce site, et montre la fiche utilisée. Pas de source, pas de réponse.

En ce moment : recherche dans les fiches, sans modèle de langage.

Bonjour. Je sais ce que Hedi a fondé, où il a travaillé, ce qu'il a construit et quand il est en Californie. Le reste, je ne le devine pas.

Journal de fondateur

Toutes les entreprises que j'ai lancées, avec leur statut. Deux se sont arrêtées, et j'en ai quitté une.

  1. août – oct. 2026Quitté

    Nearchon

    Cofondateur et CTO

    Un système d'apprentissage par IA pour l'AP Physics C: Mechanics. Il suit le raisonnement de l'élève étape par étape, au lieu de vérifier seulement la réponse finale.

    • Produit et architecture
    • Le système autour du modèle de langage : contexte, outils, évaluation
    • Découverte client, recherche de tuteurs, premiers tests avec des élèves

    Pourquoi je suis parti Je suis parti après avoir cofondé l'équipe et aidé à construire et tester la première version du tuteur IA. L'équipe est toujours active ; je ne sais pas où en est le produit aujourd'hui.

  2. avr. – août 2026Arrêté

    Tabeebi

    Fondateur

    Un logiciel de gestion de cabinet pour les médecins du privé en Tunisie.

    • Enquête de terrain auprès de 55 cabinets médicaux
    • Produit construit presque jusqu'au bout : Next.js, Supabase, tâches de fond, l'API Claude

    Pourquoi l'arrêt Je portais presque tout le travail. Après beaucoup de temps et d'argent, et sans changement dans le partage du travail, j'ai choisi d'arrêter avant d'essayer de le vendre.

  3. nov. 2025 – avr. 2026Arrêté

    Émile

    Fondateur

    Un moteur de tarification, un CRM et un tableau de bord d'exploitation pour les agences de location courte durée.

    • Conçu et déployé de bout en bout : FastAPI, Supabase
    • Appels à de nombreuses agences de location courte durée pour tester l'idée

    Pourquoi l'arrêt Aucune des agences appelées n'a voulu aller plus loin, et quand nos stages ont commencé, nous n'avions plus le temps de continuer. Tabeebi a suivi.

  4. 2024 – 2025

    Premières expériences

    Des boutiques en ligne sur Shopify que j'ai montées et gérées : fiches produits, paiement, campagnes d'acquisition. Et un agent vocal pour les appels téléphoniques, qui qualifie l'appelant et traite les objections, construit avec Rasa, la reconnaissance vocale et la synthèse vocale.

Continuer ?9Trois parties terminées. J'ai appuyé sur Continuer à chaque fois.

Expérience

Cinq stages et du freelance, décrits comme sur mon profil LinkedIn public.

  1. sept. 2026 – aujourd'hui

    SN Perfect

    Stagiaire en ingénierie logicielle

    Je construis l'ERP interne de l'entreprise, une société de nettoyage multisite : personnel et contrats, sites clients, un espace mobile pour les chefs d'équipe sur le terrain, clôture mensuelle. Sur Frappe, ERPNext et Frappe HR. Ensuite : des fonctionnalités d'IA.

    FrappeERPNextPython

  2. avr. – août 2026

    Meosis

    Stagiaire en ingénierie logicielle · Horbourg-Wihr, France

    J'ai construit un outil qui génère des maquettes de sites web avec l'IA, utilisé en rendez-vous avec les prospects, et mis en place un parcours assisté par IA, du brief client au site WordPress. Aussi : corrections sur le CRM et l'ERP maison en PHP, WordPress multisite, migrations de serveurs.

    LLM promptingFigma MakeWordPressPHP

  3. sept. 2025 – janv. 2026

    DataScale AI

    Stagiaire en ingénierie IA · startup, équipe de trois

    Suivi en temps réel de ce que font les acheteurs sur une boutique en ligne (pages, clics, panier), un score d'intention chaud ou froid, un scraper qui structure le catalogue du client, et un chatbot qui s'adapte au visiteur.

    PythonLangFlowDocker

  4. sept. – déc. 2024

    Infolog

    Stagiaire développeur .NET

    Un CRM industriel en .NET Core et C# pour un fabricant de pansements : le modèle de données et la logique métier de la chaîne de production, de la réception au contrôle qualité.

    .NET CoreC#Entity Framework

  5. juil. – sept. 2024

    SN Perfect

    Stagiaire outils internes · Paris

    Des outils qui extraient des données d'images et les exportent vers Excel, et le remplissage automatique de formulaires, pour remplacer la saisie manuelle.

  6. 2023 – aujourd'hui

    Freelance

    Développeur indépendant

    Sites WordPress et outils web pour des particuliers et des petites entreprises : fonctionnalités, intégrations, automatisations.

Projets

Un produit construit hors de l'école, puis Epitech : une école d'ingénieurs française en cinq ans, où l'on apprend en construisant. J'ai choisi 33 projets. 14 sont jouables ici.

Produit · construit hors de l'école

ZooPass

Un guide sur téléphone pour le zoo de Mulhouse. Il planifie votre visite, trace l'itinéraire sur la carte, et un chatbot répond à vos questions en montrant d'où vient chaque réponse.

Une PWA en React et TypeScript sur Cloudflare Pages. Le chatbot est un pipeline RAG : recherche vectorielle dans Astra DB plus recherche par mots-clés, un seuil de similarité de 0,70, et les sources renvoyées avec chaque réponse.

TypeScriptÉquipe de 22025–26

Les réponses de Player 2 sur ce site suivent la même idée.

Ce que j'ai construit

  • Création du projet et mise en ligne
  • Le cerveau du chatbot : comment il cherche, et comment il répond
  • Refonte de la page du chatbot
  • Création du projet et déploiement sur Cloudflare Pages
  • La fonction de chat et l'essentiel du RAG : Astra DB, le seuil de similarité, les prompts système
  • Actions contextuelles et suggestions rapides dans l'API, et refonte de la page IA

Essayez un mini-guideUne carte inventée, pas le vrai plan du zoo.

Trajet–À pied–Allées fermées0

Dijkstra sur le graphe des allées · réponse seulement si la correspondance des mots atteint 0,50

Interrogez le guideIl répond uniquement à partir de ses fiches et montre laquelle.

    Les fiches du guide
    • LanguesZooPass parle quatre langues : français, anglais, allemand et espagnol.
    • Votre plan de visiteZooPass propose un plan de visite selon votre profil et le temps dont vous disposez.
    • Trajet sur la carteLa carte trace votre trajet le long des allées du zoo et choisit le plus court.
    • ÉvénementsUne page liste les événements du jour.
    • SourcesChaque réponse du chatbot est accompagnée des documents dont elle est tirée.
    • Cette carte de démoLa carte de cette page est inventée : une entrée et des zones A à F. Ce n'est pas le vrai plan du zoo.

    Comment jouer

    1. Choisissez un départ et une arrivée sur la carte ou dans les listes. Le trajet le plus court s'affiche.
    2. Touchez une allée pour la fermer. Le trajet la contourne.
    3. Posez une question au guide. Sous le seuil de correspondance, il répond qu'il ne sait pas.

    Recréé dans le navigateur avec une carte inventée. Dans ZooPass, mon coéquipier a construit la carte et le calcul d'itinéraire ; ma part était le chatbot. Il cherche dans les documents officiels et ne garde que les passages d'une similarité de 0,70 ou plus. Cette boîte ne fait que comparer des mots avec six fiches.

    Projet d'école · jouable

    R-Type

    Un jeu de tir spatial multijoueur, fait par une équipe de cinq. J'ai construit l'éditeur de niveaux : l'outil qui décide où apparaissent les ennemis.

    Un remake en réseau du shoot'em up d'arcade, en C++20, par une équipe de cinq : moteur ECS maison, un serveur qui fait autorité sur la partie, un protocole UDP binaire.

    C++Équipe de 5Epitech, 2025–26

    Vous0Player 20Vague01

    Éditeur de niveauxDessinez des ennemis ici. Ils arrivent au-dessus, de droite à gauche.

    wave.json0 ennemis, format simplifié

    Comment jouer

    1. Survolez l'écran pour piloter le vaisseau blanc.
    2. Player 2, en orange, vous couvre.
    3. Dessinez des ennemis dans la grille : ils arrivent avec cette forme.

    Ce que j'ai construit

    • L'éditeur de niveaux, et le chargement de ses niveaux dans le jeu
    • Des vérifications automatiques à chaque modification du code par l'équipe
    • Le guide écrit qui explique comment les joueurs dialoguent avec le serveur
    • L'éditeur de cartes en Python, avec export JSON
    • Le chargement des niveaux JSON côté jeu et côté serveur
    • Le pipeline CI sur GitHub Actions
    • La documentation du protocole et de l'éditeur, et le bonus de vitesse côté serveur

    La grille est une version navigateur de l'éditeur que j'ai écrit. Le vrai est un outil de bureau.

    Projet d'école · jouable

    Arcade

    Une console de jeux écrite comme un logiciel. Un même jeu peut changer d'apparence pendant qu'on joue. J'ai écrit le jeu Snake et ses trois apparences.

    Une plateforme de jeux rétro en C++17. Les jeux et les moteurs graphiques sont des bibliothèques partagées, chargées avec dlopen pendant l'exécution.

    C++Équipe de 2Epitech, 2024–25

    Rendu avec SFML
    Pommes0Record0

    Comment jouer

    1. Cliquez sur une apparence : Lisse, Pixel ou Texte. Le jeu ne s'arrête pas.
    2. Player 2 joue. Appuyez sur une flèche pour prendre la main.
    3. Sur téléphone, balayez l'écran.

    Ce que j'ai construit

    • Le jeu Snake
    • La première version de ses trois apparences
    • Les images, et le guide pour les autres développeurs
    • Snake : contrôle au clavier, bords qui bouclent, score
    • La première version des trois moteurs de rendu : SFML, SDL2, ncurses
    • Les sprites pour SFML et SDL2, et la documentation de l'interface

    La ligne pointillée est le chemin que Player 2 a prévu jusqu'à la pomme.Redessiné pour le navigateur : un seul état de jeu, trois moteurs de rendu. Player 2 planifie son chemin avec un parcours en largeur.

    Projet d'école · jouable

    Jetpack

    Une course à deux joueurs en réseau. J'ai écrit l'arbitre : le serveur qui sait où est chaque joueur, qui a pris quelle pièce et qui a touché quoi.

    Un runner multijoueur. Un serveur TCP en C fait tourner la partie avec poll(), et un client graphique en C++ l'affiche.

    CÉquipe de 3Epitech, 2024–25

    Pièces0Niveaux terminés0

    Ce que l'arbitre sait en ce moment

    Position
    0, 0
    Pièces
    0
    État
    En vol

    Fichier de cartee = obstacle, c = pièce

    Journal du serveurun tick toutes les 100 ms

    Comment jouer

    1. Maintenez le bouton de la souris sur l'écran, ou la barre d'espace, pour monter.
    2. Relâchez pour descendre.
    3. Prenez les pièces, évitez les lasers.

    Ce que j'ai construit

    • Le serveur et ses connexions avec les joueurs
    • La lecture du fichier de niveau
    • Pièces, obstacles et collisions
    • Qui gagne et qui perd
    • Le serveur : connexions et joueurs, avec poll()
    • Le chargement de la carte ASCII et sa mise à l'échelle en 1920 × 1080
    • Pièces, obstacles, collisions et défilement
    • Conditions de victoire et de défaite

    Le cadre sous le jeu affiche les chiffres de l'arbitre, en direct.Les panneaux sous le jeu montrent le côté serveur. Les noms des messages sont les vrais ; les valeurs sont calculées ici.

    Projet d'école · jouable

    Zappy

    Un jeu en réseau : des joueurs IA se déplacent sur un petit monde rond, ramassent de la nourriture et se parlent. Chaque déplacement est une commande texte envoyée à un seul serveur.

    Un serveur TCP en C avec une boucle poll(), des clients IA en C++ et un client 3D avec raylib. Chaque client a une file de 10 commandes au plus, chacune exécutée après un délai fixé par la fréquence (-f).

    CÉquipe de 5Epitech, 2024–25

    Vue serveurUne file par client, 10 places. La première commande s'exécute quand sa barre est pleine.

    Vitesse du serveur
    Votre nourriture0Nourriture de Player 20Unités de temps0

    Journal du serveur← d'un client · → vers un client · GUI = ligne pour la vue 3D

    Comment jouer

    1. Appuyez sur une flèche ou un bouton : votre commande rejoint la file bleue.
    2. Le serveur l'exécute quand son temps est écoulé. Marchez jusqu'à la nourriture dorée et ramassez-la.
    3. Envoyez plus de 10 commandes d'un coup et le serveur répond ko.

    Ce que j'ai construit

    • Le serveur auquel se connectent tous les joueurs IA et la vue 3D.
    • La file d'attente des commandes de chaque joueur, avec son minutage.
    • Avancer, et envoyer un message à tous les autres joueurs.
    • Structures du serveur, socket et boucle poll(), connexion des clients et vérification des équipes, analyse des arguments.
    • Commandes du protocole graphique : msz, tna, bct, mct, ppo, pnw.
    • La file de commandes différées de chaque client : 10 places, temps d'exécution calculé selon la fréquence.
    • Forward, Broadcast et Connect_nbr, corrections de fuites mémoire, et une classe réseau dans le client 3D.

    Recréé pour le navigateur : une copie simplifiée des règles du serveur tourne dans cette page. Le vrai serveur est un programme C qui parle à ses clients en TCP.

    Projet d'école · jouable

    Corewar

    Deux petits programmes, appelés champions, partagent un même bloc de mémoire et essaient de survivre à l'autre. Un programme qui cesse de dire « live » est éliminé.

    Une machine virtuelle en C : elle charge les champions compilés (.cor), les place dans une arène circulaire partagée et exécute leurs instructions cycle par cycle, avec un délai par instruction et une vérification périodique des live.

    CÉquipe de 2Epitech, 2023–24

    Votre champion

    Instruction sous votre premier processus

    Adresse
    -
    Octets
    -

    -

    Cycle0Cycles avant élimination0Processus0Dernier live-

    Mémoire autour de votre processus

    Comment jouer

    1. Choisissez un champion. Player 2 prend l'autre.
    2. Regardez-les écrire tous les deux dans la mémoire partagée. Un programme qui cesse de dire live est retiré.
    3. Appuyez sur Pause, puis sur Pas à pas, pour lire l'instruction que votre programme exécute ensuite.

    Ce que j'ai construit

    • Le chargement de chaque champion depuis son fichier et son placement dans la mémoire partagée.
    • La lecture de chaque instruction à partir des octets, puis son exécution après son délai.
    • Le suivi de qui a dit live, pour savoir qui est encore en jeu.
    • Lecture des champions .cor et conversion entre décimal et hexadécimal.
    • Création de l'arène et placement des champions.
    • Décodage des instructions, enregistrement de chaque live, et les instructions and, or, xor et aff.
    • Délais des instructions et gestion des erreurs.

    Recréé pour le navigateur avec un jeu d'instructions réduit et trois champions écrits pour cette page. La vraie machine est en C et exécute des fichiers .cor compilés.

    Projet d'école · jouable

    Whanos

    Une machine qui construit les applications toute seule. Poussez votre code : elle détecte le langage, construit une image Docker et la stocke, prête à tourner.

    Une chaîne CI/CD : à chaque nouveau commit, Jenkins détecte le langage d'un dépôt, construit une image à partir d'un Dockerfile base ou standalone, et la pousse vers un registre privé. Ansible installe Jenkins et le registre.

    DockerJenkinsÉquipe de 2Epitech, 2025–26

    Images0Arrêts0

    Votre dépôtChoisissez un langage, ou cochez vous-même des fichiers.

    Fichiers du dépôt

    Journal Jenkins

    Comment jouer

    1. Choisissez un langage, ou cochez les fichiers de votre dépôt.
    2. Poussez un commit et suivez chaque étape, avec le journal Jenkins.
    3. Essayez deux langages à la fois, aucun fichier de langage, ou deux fois le même commit.

    Ce que j'ai construit

    • Les dix images Docker : une image base et une image standalone pour chacun des cinq langages
    • L'image Befunge, qui compile son propre interpréteur depuis les sources
    • Le guide qui explique comment construire et utiliser les images
    • Dix Dockerfiles, Dockerfile.base et Dockerfile.standalone, pour C, Java, JavaScript, Python et Befunge
    • Builds multi-étapes : compilation dans une image, exécution dans une plus petite ; cfunge compilé avec cmake pour Befunge
    • docs/docker_image.md : commandes de build, règles de chaque image, structure du dépôt

    Rejoué dans votre navigateur : rien n'est vraiment construit. Les règles de détection, le choix du build et les étapes des Dockerfiles viennent du projet. L'étape de déploiement Kubernetes n'est pas montrée, car elle n'était pas terminée.

    Projet d'école · jouable

    Raytracer

    Un programme qui dessine des images 3D en suivant des rayons de lumière. Vous décrivez une scène dans un fichier texte ; il la lit et peint l'image pixel par pixel.

    Un ray tracer en C++20. Un fichier de scène libconfig++ (caméra, primitives, lumières) est lu dans une Scene ; chaque pixel envoie un rayon, trouve l'objet le plus proche et l'éclaire avec des lumières ambiante et directionnelles. La sortie est une image PPM.

    C++20libconfig++Équipe de 4Epitech, 2024–25

    Passe1/4Rayons0

    scene.cfgModifiez-le : l'image suit.

    Comment jouer

    1. Changez un nombre dans le fichier de scène. L'image se redessine, grossière d'abord, puis nette.
    2. Cassez le fichier exprès : l'erreur indique la ligne et ce qui ne va pas.
    3. Player 2 déplace la lumière, une sphère et la caméra jusqu'à ce que vous commenciez à taper.

    Ce que j'ai construit

    • La partie qui lit le fichier de scène : caméra, sphères, plans et lumières
    • La classe Scene, qui contient la caméra, les formes et les lumières
    • Analyse de la scène avec libconfig++ : caméra (résolution, position, rotation, champ de vision), sphères, plans, lumières ambiante et directionnelles
    • La classe Scene : un seul conteneur pour la caméra, les primitives et les lumières
    • Formes créées via le PrimitiveBuilder de l'équipe

    Recréé dans le navigateur. Le format de scène suit le parseur du projet. Les vérifications supplémentaires et le petit moteur de rendu qui dessine l'image ont été écrits pour cette page, avec des ombres que l'original n'avait pas.

    Projet d'école · jouable

    Minishell

    Un shell en ligne de commande, comme celui d'un terminal. Tapez une commande : le shell trouve le programme, le lance et affiche le résultat.

    Un shell de type tcsh en C : une boucle de prompt avec getline, des programmes trouvés via PATH et lancés avec fork, execve et waitpid, des built-ins, des redirections et un pipe avec dup2.

    CSoloEpitech, 2023–24

    Tab complète · ↑ ↓ historique · Ctrl+L efface

    Commandes intégréescd · env · setenv · unsetenv · exit

    Programmes dans /binls · cat · echo · pwd · grep · wc · head · sort · clear

    Comment jouer

    1. Cliquez dans le terminal, tapez une commande et appuyez sur Entrée.
    2. Envoyez la sortie dans un fichier avec > ou >>, ou vers une autre commande avec |.
    3. Tapez cat << END, quelques lignes, puis END : le shell les lit comme entrée.

    Ce que j'ai construit

    • La boucle du prompt : lire une ligne, l'exécuter, réafficher le prompt.
    • La recherche des programmes dans les dossiers du PATH, et leur lancement.
    • Les commandes intégrées : cd, env, setenv, unsetenv, exit.
    • L'envoi de la sortie vers des fichiers, la lecture du texte tapé après <<, et le passage de la sortie d'une commande à la suivante.
    • Prompt « $> » lu avec getline ; fork, execve et waitpid ; un message quand le programme plante (Segmentation fault, Floating exception).
    • cd avec un chemin, sans argument (HOME) et cd -, avec mise à jour de PWD et OLDPWD ; setenv avec vérification du nom, unsetenv, env, exit.
    • Redirections > et >> et heredoc << avec dup2 et pipe ; le séparateur ;.
    • Un pipe entre deux commandes, et ma propre bibliothèque printf.

    Recréé pour le navigateur : une petite copie des règles du shell tourne dans cette page, avec un faux système de fichiers et quelques programmes. Les vrais shells sont des programmes C qui lancent de vrais programmes.

    Projet d'école · jouable

    Wolfram

    Une rangée de cellules où chaque cellule vit ou meurt selon ses deux voisines. Un seul nombre, la règle, décide de tout, et des règles simples dessinent des motifs surprenants.

    Un automate cellulaire élémentaire en Haskell : options en ligne de commande (--rule, --start, --lines, --window, --move), génération suivante selon chaque règle, et affichage centré avec « * ».

    HaskellSoloEpitech, 2024–25

    Règle30

    La règle, cellule par cellulePour chaque groupe de trois cellules, la cellule du dessous vit ou non. Cliquez sur une case pour l'inverser.

    Essayez

    Ce qu'affiche le terminal (premières lignes)

    Comment jouer

    1. Déplacez le curseur ou choisissez une règle : 30 semble aléatoire, 90 dessine des triangles, 110 fait pousser des structures.
    2. Cliquez sur les petites cases pour inverser une partie de la règle.
    3. Ou tapez la commande vous-même, avec les mêmes options que le vrai programme.

    Ce que j'ai construit

    • La lecture des options tapées après le nom du programme, et le refus des options invalides.
    • Le calcul de chaque nouvelle ligne de cellules à partir de celle du dessus.
    • L'affichage des lignes centrées dans la fenêtre, avec des étoiles.
    • Analyse des arguments : --rule (obligatoire), --start, --lines, --window (80 par défaut), --move ; code de sortie 84 sur un argument invalide.
    • La génération suivante pour les règles 30, 90 et 110.
    • La boucle d'affichage, et la configuration du projet Stack.

    Recréé pour le navigateur. Le programme Haskell d'origine accepte les règles 30, 90 et 110 ; cette page exécute n'importe quelle règle de 0 à 255.

    Projet d'école · jouable

    myPaint

    Un petit logiciel de dessin, fait à deux. Vous dessinez au crayon sur un tableau sombre, choisissez une couleur et une taille, gommez, ouvrez l'aide et enregistrez le dessin en image.

    C avec CSFML. Une fenêtre de 1920 × 1080 avec une barre d'outils. Le crayon empile des cercles tant que le bouton est enfoncé ; la gomme peint avec la couleur du tableau. Le tableau est enregistré dans un fichier image.

    CCSFMLÉquipe de 2Epitech, 2023–24

    Traits0

    Comment jouer

    1. Dessinez sur le tableau : Player 2 s'écarte.
    2. Changez de couleur ou de taille, ou prenez la gomme, dans la barre d'outils.
    3. Enregistrez en PNG pour garder votre dessin.

    Ce que j'ai construit

    • La fenêtre et les boutons de la barre d'outils
    • Le choix de la couleur et de la taille du crayon, et la gomme
    • L'écran d'aide et l'enregistrement du dessin en image
    • Fenêtre CSFML et barre d'outils : un sprite par bouton, détection du bouton touché au clic
    • Huit couleurs, trois rayons de crayon (5, 18, 35 px), une gomme qui peint en rgb(22, 22, 22)
    • Aide affichée ou masquée, tableau copié de la fenêtre vers un fichier image

    Recréé pour le navigateur en TypeScript à partir de la version C : mêmes couleurs, tailles et gomme. Ici, le crayon comble les espaces entre les cercles, et le fichier est un PNG daté au lieu de test.jpg.

    Projet d'école · jouable

    Cryptography

    Un outil en ligne de commande, en C, qui chiffre et déchiffre du texte avec trois algorithmes, fait à trois. Ma part : XOR, les conversions hexadécimales et le point d'entrée qui choisit l'algorithme.

    my_pgp en C lit l'entrée standard. J'ai écrit XOR en mode bloc et flux avec un ordre d'octets little-endian, la conversion hex vers octets et inversement, la lecture de l'entrée, et main, qui aiguille vers XOR, AES ou RSA.

    CÉquipe de 3Epitech, 2025–26

    Octet par octet : octet du message (inversé dans son bloc) XOR octet de la clé

      Chiffré (hex)

      —

      Comment jouer

      1. Tapez un message et une clé.
      2. Passez du mode bloc au mode flux, et regardez chaque octet changer.
      3. Déchiffrez : un XOR avec la même clé redonne le message.

      Ce que j'ai construit

      • Le chiffrement XOR, en mode bloc et en mode flux
      • La conversion du texte en hexadécimal et inversement
      • Le point d'entrée qui envoie chaque commande au bon algorithme
      • xor_block et xor_stream : octets inversés par bloc (little endian), puis XOR avec la clé
      • Le mode flux complète le dernier bloc avec des zéros et les retire au déchiffrement
      • hex_to_bytes et print_hex, un lecteur stdin dynamique, main qui aiguille vers xor, aes et rsa

      Recréé pour le navigateur à partir de la version C, XOR uniquement. Un XOR avec une clé courte répétée est un chiffrement d'école : il ne protège pas de vrais secrets.

      Hackathon · jouable

      Nuit de l'Info

      Une nuit de hackathon en équipe de huit : un jeu web sur l'océan et le corps humain. J'ai fait la saisie en code Morse de l'écran de connexion, volontairement un peu agaçante.

      Angular 19, composants standalone. Dans le composant de connexion, j'ai écrit la saisie Morse : les instants d'appui et de relâchement de la touche donnent un point, un trait ou une fin de lettre, décodés en direct avec une table Morse. J'ai aussi branché la route.

      AngularTypeScriptÉquipe de 82024–25

      Connexion jouet (rien n'est envoyé ni stocké)

      Nom, en Morse

      Maintenez la touche pour écrire

      Table Morse

      • A·–
      • B–···
      • C–·–·
      • D–··
      • E·
      • F··–·
      • G––·
      • H····
      • I··
      • J·–––
      • K–·–
      • L·–··
      • M––
      • N–·
      • O–––
      • P·––·
      • Q––·–
      • R·–·
      • S···
      • T–
      • U··–
      • V···–
      • W·––
      • X–··–
      • Y–·––
      • Z––··

      Comment jouer

      1. Maintenez la touche : brièvement pour un point, plus longtemps pour un trait.
      2. Maintenez-la une seconde ou plus pour finir la lettre.
      3. Lisez votre nom dans le champ, puis connectez-vous (c'est un jouet).

      Ce que j'ai construit

      • La saisie en code Morse de l'écran de connexion
      • Appui court pour un point, appui long pour un trait, très long pour la lettre suivante
      • La traduction en lettres en direct, et Retour arrière pour corriger une erreur
      • keydown et keyup sur Espace mesurent l'appui : moins de 200 ms, un point ; moins de 800 ms, un trait ; 1 s ou plus, une fin de lettre
      • Une table Morse inversée en table de recherche, avec un décodage lettre par lettre à chaque appui
      • Le template et le style du composant, et la route, passée plus tard à provideRouter

      Recréé pour le navigateur à partir de la version Angular, avec les mêmes durées. Les boutons Point, Trait et Lettre suivante sont un ajout de cette page. Il n'y a ni compte ni mot de passe.

      Les 33 projets

      Ce qu'est chacun, et la partie que j'ai écrite.

        Hedi Bannour

        À propos

        J'aime tout le chemin : trouver le problème, construire la solution, et la mettre entre les mains des gens.

        J'ai étudié les maths et l'informatique à l'Université de Strasbourg, puis j'ai rejoint Epitech en 2023 pour apprendre en construisant. Depuis : 33 projets, cinq stages, du freelance et trois entreprises lancées. Je parle français, arabe et anglais.

        Avant le code Au lycée Pierre Mendès France de Tunis, je tenais une petite boutique en ligne : commandes via Facebook, livraison à la main, produits trouvés à la demande grâce à mon réseau. Après mon bac scientifique en 2020, j'ai commencé les maths et l'informatique à l'Université de Strasbourg.

        1. 2016–20Lycée Pierre Mendès France, Tunis, et une première boutique en ligne
        2. 2020–23Université de Strasbourg, maths et informatique
        3. 2023–Epitech, ingénierie logicielle, promotion 2028
        4. 2023–Développeur freelance
        5. 2024–26Cinq stages : SN Perfect, Infolog, DataScale AI, Meosis, puis de nouveau SN Perfect
        6. 2025–26Fondateur : Émile, puis Tabeebi ; cofondateur de Nearchon
        7. 2027Échange à Cal State San Marcos, Californie
        StackTypeScript, Python, C, C++, C#, Haskell, SQL. Next.js et React, FastAPI, Supabase et PostgreSQL, Cloudflare, Docker, GitHub Actions.
        IALe système autour du modèle : recherche avec sources (RAG), agents et outils, gestion du contexte, évaluation.
        SécuritéSix modules de sécurité à Epitech, dont deux projets de sécurité en solo (un CTF et des rooms TryHackMe). HackTheBox Season 9 : niveau Silver, 3 machines entièrement compromises.

        Parlons-en.

        Je suis à Cal State San Marcos, au nord de San Diego, du 18 janvier au 13 août 2027. Dites-moi ce que vous construisez.

        La version 60 secondes

        Hedi Bannour

        Ingénieur produit IA et fondateur. Je mène un produit d'IA de l'idée à un système qui fonctionne : l'interface, le back-end, et tout ce qui entoure le modèle de langage.

        Fondateur

        Expérience

        Projets

        Stack

        TypeScript, Python, C, C++, C#, Haskell, SQL. Next.js et React, FastAPI, Supabase et PostgreSQL, Cloudflare, Docker, GitHub Actions. RAG, agents et outils, évaluation. Français, arabe, anglais.

        M'écrire sur LinkedIn
        Player 2