Hello World, je suisHello World, I'm

Mohamed Aziz Baoueb.

Élève-ingénieur en cybersécuritéCybersecurity engineering student Cloud & DevOpsCloud & DevOps Détection d'intrusionIntrusion detection

Élève-ingénieur à l'INSA Centre-Val de Loire, je construis des projets à la croisée de la sécurité, de l'infrastructure cloud et de l'automatisation, puis je les documente avec leurs chiffres et leurs limites.

Engineering student at INSA Centre-Val de Loire, I build projects where security, cloud infrastructure and automation meet, then document them with their numbers and their limits.

Disponible pour un stage dès avril 2027Available for an internship from April 2027

Voir mes projetsSee my projects GitHub ↗ LinkedIn ↗

cybersécurité

cybersecurity

Un détecteur d'intrusion qui apprend à quoi ressemble le trafic normal, et un jeu d'entraînement au pentest conçu en équipe.

An intrusion detector that learns what normal traffic looks like, and a pentest training game built as a team.

AEGIS Mini-SOC →AEGIS Mini-SOC →

cloud & devops

Un mini-cloud construit de zéro : des machines Linux louées à la minute, déployées avec Docker et Ansible, vérifiées par une chaîne CI/CD.

A mini cloud built from scratch: Linux machines rented by the minute, deployed with Docker and Ansible, checked by a CI/CD pipeline.

InsaCloud →

réseau & développement

network & development

Un jeu de stratégie en Python, puis sa version pair-à-pair avec un démon réseau en C, et une application web de révisions.

A strategy game in Python, then its peer-to-peer version with a C network daemon, and a revision web application.

MedievAIl Battle →MedievAIl Battle →

~/à-proposabout

Initialisation

Élève-ingénieur à l'INSA Centre-Val de Loire, spécialité Sécurité et Technologies Informatiques (promotion 2028). Mon premier projet web date d'un stage de l'été 2025 chez Anypli, en Tunisie. Depuis, j'ai construit un mini-cloud et un détecteur d'intrusion par machine learning.

Engineering student at INSA Centre-Val de Loire, Security and Computer Technologies major (class of 2028). My first web project came from an internship at Anypli, in Tunisia, in summer 2025. Since then I have built a mini cloud and a machine-learning intrusion detector.

Ma façon de travailler : mesurer, documenter, et dire ce qui ne marche pas. Chaque projet a ses tests, ses chiffres et ses limites.

How I work: measure, document, and say what doesn't work. Every project has its tests, its numbers and its limits.

Je cherche un stage à partir de début avril 2027, en cybersécurité ou en cloud et DevOps.

I'm looking for an internship starting early April 2027, in cybersecurity or in cloud and DevOps.

$ whoami
mohamed-aziz-baoueb
$ cat ecoleschool.txt
INSA CVL · STI · promoclass of 2028
$ cat stageinternship.txt
dès avril 2027 · cybersécurité | cloud & DevOpsfrom April 2027 · cybersecurity | cloud & DevOps
$ ls projetsprojects/
insacloud/  aegis-mini-soc/  planificateur/
medievail-battle/  medievail-p2p/  cyberquest/

~/projetsprojects

Opérations & projetsOperations & projects

Clique sur une image pour voir la démo, les captures et les mesures. Les chiffres viennent des dépôts.

Click an image to see the demo, the screenshots and the measurements. The numbers come from the repositories.

Projet personnel · sept. – oct. 2026Personal project · Sep – Oct 2026

InsaCloud

Un mini-fournisseur de cloud construit de zéro : on loue une machine Linux à la minute, depuis le navigateur.

A mini cloud provider built from scratch: rent a Linux machine by the minute, straight from the browser.

94 tests · 11 contrôles CI/CD · 9 rôles Ansible

94 tests · 11 CI/CD checks · 9 Ansible roles

Python · Flask · Docker · Ansible · Vagrant · nginx

Projet personnel · oct. 2026Personal project · Oct 2026

AEGIS Mini-SOC

Un détecteur d'intrusion réseau qui apprend la normale, et le poste d'analyste qui rend ses alertes exploitables.

A network intrusion detector that learns what normal looks like, and the analyst workstation that makes its alerts usable.

99,6 % de rappel · faux positifs de 341 à 53 par heure · MITRE ATT&CK

99.6% recall · false positives from 341 to 53 per hour · MITRE ATT&CK

Python · scikit-learn · FastAPI · React · scapy

Projet personnel · juil. 2025 – oct. 2026Personal project · Jul 2025 – Oct 2026

Planificateur de révisionsRevision planner

Les examens d'un côté, un planning de révision de l'autre, construit selon la répétition espacée.

Exams on one side, a revision schedule on the other, built on spaced repetition.

de 1 à 45 tests · TypeScript strict · un seul point d'entrée

from 1 to 45 tests · strict TypeScript · a single command to run it

TypeScript · React 18 · Strapi 5 · Vite · Vitest

Projet personnel · oct. 2026Personal project · Oct 2026

Cap Stage

Un suivi de candidatures de stage gratuit et partageable, sans compte à créer ni serveur : chacun garde ses données chez soi, ou dans son propre Google Drive.

A free, shareable internship-application tracker with no account to create and no server: everyone keeps their data at home, or in their own Google Drive.

0 serveur · 3 autorisations Google non sensibles · AES-256-GCM

0 servers · 3 non-sensitive Google scopes · AES-256-GCM

JavaScript · CSP · Web Crypto · OAuth 2.0 · API Google Drive

~/projets-d-équipeteam-projects

Projet d'équipe · INSA CVL · oct. 2025 – janv. 2026Team project · INSA CVL · Oct 2025 – Jan 2026

MedievAIl Battle

Un simulateur de batailles médiévales en Python : deux armées pilotées par des IA, choisies parmi plusieurs stratégies, s'affrontent sur un champ de bataille avec mini-carte.

A medieval battle simulator in Python: two armies driven by AIs, picked from several strategies, fight on a battlefield with a mini-map.

5 IA au choix · arbalétriers, chevaliers, piquiers · architecture MVP

5 AIs to choose from · crossbowmen, knights, pikemen · MVP architecture

Python · POO · MVP

Projet d'équipe · INSA CVL · oct. 2025 – avril 2026Team project · INSA CVL · Oct 2025 – Apr 2026

MedievAIl Battle · réseau pair-à-pairMedievAIl Battle · peer-to-peer network

Le même jeu, joué à deux machines sans serveur central : chaque joueur lance le jeu en Python et un démon réseau en C, et une « propriété réseau » garantit qu'une unité n'a qu'un seul maître à la fois.

The same game, played across two machines with no central server: each player runs the Python game and a C network daemon, and a "network ownership" rule guarantees a unit has only one master at a time.

2 processus par machine · sockets UDP/TCP · aucun serveur central

2 processes per machine · UDP/TCP sockets · no central server

C · Python · UDP / TCP · IPC

Projet d'équipe · 4 étudiants · juin – oct. 2026Team project · 4 students · Jun – Oct 2026

CyberQuest

Un jeu de simulation de pentest : le joueur infiltre un réseau fictif depuis un terminal intégré, à travers des niveaux Linux, Docker et DVWA, une mission Active Directory et des défis d'injection de prompt sur des LLM, avec un assistant « Mentor » pour l'aider.

A pentest simulation game: the player infiltrates a fictional network from a built-in terminal, through Linux, Docker and DVWA levels, an Active Directory mission and prompt-injection challenges against LLMs, with a "Mentor" assistant to help.

6 étapes Active Directory · 13 niveaux web · 8 niveaux Linux · 2 défis d'IA

6 Active Directory steps · 13 web levels · 8 Linux levels · 2 AI challenges

React 18 · Vite · xterm.js · Canvas 2D · Node.js

~/arsenal

Arsenal techniqueTechnical arsenal

Chaque compétence renvoie à un projet précis.

Every skill points back to a specific project.

~/parcourstimeline

Journal de bordLogbook

  1. 2017 – 2020Collège Pilote de Monastir Mention très bien. Admission sur concours national.With distinction. Admission by national competition.
  2. 2017 · 2019 · 2020Formations ATAST en robotiqueATAST robotics training Arduino, Raspberry Pi, Python et C++, un mini-jeu Unity en équipe, conception 3D.Arduino, Raspberry Pi, Python and C++, a team-built Unity mini-game, 3D design.
  3. 2020 – 2023Lycée Pilote de Monastir, section mathématiquesLycée Pilote de Monastir, mathematics track Mention très bien.With distinction.
  4. sept. 2023Sep 2023Entrée à l'INSA Centre-Val de LoireJoined INSA Centre-Val de Loire Diplôme d'ingénieur, spécialité STI, promotion 2028.Engineering degree, STI major, class of 2028.
  5. juil. – août 2025Jul – Aug 2025Stage chez Anypli, TunisieInternship at Anypli, Tunisia Première application web : Agenda de Révision.First web application: Agenda de Révision.
  6. oct. 2025 – janv. 2026Oct 2025 – Jan 2026MedievAIl Battle Projet d'équipe : un simulateur de batailles en Python.Team project: a battle simulator in Python.
  7. oct. 2025 – avril 2026Oct 2025 – Apr 2026MedievAIl Battle · réseauMedievAIl Battle · network Projet d'équipe : le jeu en pair-à-pair, avec un démon réseau en C.Team project: the game over peer-to-peer, with a C network daemon.
  8. juin 2026Jun 2026CyberQuest Projet d'équipe : jeu de simulation de pentest.Team project: pentest simulation game.
  9. sept. 2026Sep 2026InsaCloud Mini-cloud construit de zéro.Mini cloud built from scratch.
  10. oct. 2026Oct 2026AEGIS Mini-SOC Détection d'intrusion par machine learning.Intrusion detection with machine learning.
  11. oct. 2026Oct 2026Cap Stage Suivi de candidatures de stage, sans serveur, avec synchronisation Google Drive.Internship-application tracker, serverless, with Google Drive sync.

~/engagementscommunity

Au-delà du codeBeyond code

À l'INSA CVLAt INSA CVL

  • Ambassadeur REDEX GroupREDEX Group ambassadorAmbassadeur du partenariat entre REDEX Group et l'INSA CVL.Ambassador for the partnership between REDEX Group and INSA CVL.
  • Membre du BDE, pôle associationStudent union (BDE) member, associations team
  • Membre de la Team PiloteTeam Pilote member

Bénévolat à MonastirVolunteering in Monastir

  • Association El KOLLADepuis 2020. Recensement de familles dans le besoin, accompagnement d'enfants à besoins spécifiques, aides alimentaires.Since 2020. Surveying families in need, supporting children with special needs, food aid.
  • Notre Grand Bleu2022. Sensibilisation au rappel vaccinal COVID et à la propreté des plages, lâcher de tortues marines.2022. Awareness of COVID boosters and beach cleanliness, sea turtle release.
  • Jasmin Open, WTA 250Octobre 2022. Bénévole pour l'organisation du tournoi.October 2022. Volunteer on the tournament organisation.

~/contact

Initialiser la connexionInitialise the connection

Je cherche un stage à partir de début avril 2027, en cybersécurité ou en cloud et DevOps. Le plus rapide est de m'écrire sur LinkedIn, par email, ou de m'appeler.

I'm looking for an internship starting early April 2027, in cybersecurity or in cloud and DevOps. The fastest way to reach me is LinkedIn, email, or a phone call.

LinkedInlinkedin.com/in/mohamed-aziz-baoueb-2a0827301 GitHubgithub.com/aziz3r

Emailmohamed.baoueb@insa-cvl.fr

TéléphonePhone07 64 40 49 94+33 7 64 40 49 94

InsaCloud

démo : création de compte, location d'une machine, terminal, bureau, fin de location

demo: sign-up, renting a machine, terminal, desktop, end of rental

Terminal dans le navigateur
Terminal in the browser
Bureau XFCE en ligne
XFCE desktop, online
94tests automatisésautomated tests
11contrôles CI/CDCI/CD checks
9rôles Ansible idempotentsidempotent Ansible roles
  • Ce que ça faitWhat it does Un contrôleur Flask place chaque machine sur le worker le moins chargé et le pilote par SSH, sans exposer d'API Docker. L'utilisateur choisit Ubuntu, Debian ou Alpine, en terminal web ou en bureau XFCE (noVNC). La machine se détruit à l'expiration. A Flask controller places each machine on the least loaded worker and drives it over SSH, with no Docker API exposed. The user picks Ubuntu, Debian or Alpine, as a web terminal or an XFCE desktop (noVNC). The machine destroys itself on expiry.
  • Reprise sur panneFailover Un worker silencieux passe hors ligne au bout d'environ 90 s et ses machines sont recréées sur un autre nœud, sans perdre la durée réservée. A silent worker goes offline after about 90 s and its machines are recreated on another node, without losing the reserved time.
  • SécuritéSecurity Mot de passe root chiffré (Fernet) et affiché une seule fois, conteneurs sans capacités superflues (--cap-drop ALL), CSRF, verrouillage anti-force-brute, CSP stricte. Chaîne CI : ruff, bandit, pip-audit, gitleaks, DAST avec nuclei, ansible-lint, hadolint, Trivy, SBOM. Encrypted root password (Fernet) shown once, containers stripped of extra capabilities (--cap-drop ALL), CSRF protection, brute-force lockout, strict CSP. CI pipeline: ruff, bandit, pip-audit, gitleaks, DAST with nuclei, ansible-lint, hadolint, Trivy, SBOM.
  • Limite assuméeKnown limit Les fichiers de l'ancienne machine sont perdus lors d'une reprise : il n'y a pas de stockage partagé. Files from the old machine are lost during a failover: there is no shared storage.

AEGIS Mini-SOC

démo : connexion, tableau de bord, flux temps réel, incident expliqué, métriques du modèle

demo: login, dashboard, live flows, an explained incident, model metrics

Pourquoi cette alerte : chaque caractéristique est comparée à sa valeur normale
Why this alert: each feature is compared with its normal value
Ce que vaut le modèle, y compris la famille qu'il rate
What the model is worth, including the family it misses
99,6 %de rappel, mesurérecall, measured
341 → 53faux positifs par heurefalse positives per hour
9familles liées à MITRE ATT&CKattack families mapped to MITRE ATT&CK
  • Ce que ça faitWhat it does Une seule chaîne du paquet à l'incident, pour le laboratoire, le rejeu de PCAP et la capture réelle (scapy). 52 caractéristiques de flux, deux étages de machine learning (anomalies entraînées sur du trafic bénin seul, puis un classifieur qui nomme la famille et peut opposer son veto), un seuil par hôte et des alertes regroupées en incidents. Console React/TypeScript en temps réel (FastAPI, WebSocket). A single pipeline from packet to incident, for the lab, PCAP replay and live capture (scapy). 52 flow features, two machine-learning stages (anomalies learned on benign traffic only, then a classifier that names the family and can veto), a per-host threshold, and alerts grouped into incidents. Real-time React/TypeScript console (FastAPI, WebSocket).
  • Une erreur utileA useful mistake Ma première règle de seuil (médiane + k·MAD) a fait tomber le rappel à 14 %. Les scores étant déjà presque uniformes, je l'ai remplacée par un quantile propre à chaque hôte. My first threshold rule (median + k·MAD) dropped recall to 14%. Since the scores were already close to uniform, I replaced it with a per-host quantile.
  • À l'échelleAt scale 8 994 alertes regroupées en un seul incident, 30 000 paquets par seconde, 94 tests. 8,994 alerts grouped into a single incident, 30,000 packets per second, 94 tests.
  • Limite assuméeKnown limit La balise de commande et contrôle (C2) n'est détectée qu'à 48,6 %. Le produit l'affiche lui-même. The command-and-control beacon is only detected 48.6% of the time. The product shows this itself.

Planificateur de révisionsRevision planner

démo : connexion, ajout d'un examen, disponibilités, planning, calendrier, version anglaise

demo: login, adding an exam, availability, schedule, calendar, English version

Planning généré
Generated schedule
Vue semaine
Week view
Sur mobile
On mobile
1 → 45tests, avant et après la refontetests, before and after the rebuild
0any en TypeScript strictany left in strict TypeScript
1commande pour tout lancercommand to run everything
  • OrigineOrigin Né de mon stage chez Anypli (Tunisie, juillet – août 2025), sans aucune expérience du développement web au départ. Livré le 15 août 2025, puis repris seul pour le rendre fiable. Born from my internship at Anypli (Tunisia, July – August 2025), with no web development experience at the start. Delivered on 15 August 2025, then rebuilt on my own to make it reliable.
  • Ce que ça faitWhat it does L'étudiant saisit ses examens, leurs coefficients et ses disponibilités. Le moteur de planification (fonctions pures, isolé et testé) répartit des séances datées selon l'importance de chaque épreuve et son espacement. The student enters exams, their weights and availability. The planning engine (pure functions, isolated and tested) spreads dated sessions according to each exam's weight and spacing.
  • ArchitectureArchitecture Monorepo TypeScript : interface React 18 avec Vite et Redux Toolkit, API Strapi 5 qui cloisonne les données par étudiant, interface en français et en anglais. TypeScript monorepo: React 18 front end with Vite and Redux Toolkit, a Strapi 5 API that keeps each student's data separate, interface in French and English.

Cap Stage

démo sur données fictives : connexion, aperçu, glisser-déposer, fiche, ajout rapide, dossiers, projets, compétences, thème sombre, réglages

demo on fictitious data: sign-in, overview, drag and drop, application sheet, quick add, documents, projects, skills, dark theme, settings

Aperçu : relances, échéances, pipeline, compte à rebours
Overview: follow-ups, deadlines, pipeline, countdown
Fiche : domaine, ce que l'entreprise cherche vraiment, ce qui lui a été envoyé
Sheet: field, what the company really wants, what was sent to it
Compétences demandées, projets qui les démontrent, lacunes à combler
Requested skills, the projects that prove them, gaps to fill
0serveur, aucune donnée chez moiservers, no data held by me
3autorisations Google, aucune sensibleGoogle scopes, none sensitive
310 000itérations PBKDF2 pour le verrouillagePBKDF2 iterations for the lock
  • OrigineOrigin Né de ma propre recherche de stage de quatre mois (avril 2027), puis ouvert à mes amis : il fallait un outil que n'importe qui ouvre avec un lien, sans compte à créer et sans que je puisse lire ses données. Born from my own search for a four-month internship (April 2027), then opened to friends: it had to be a tool anyone opens from a link, with no account to create and no way for me to read their data.
  • Ce que ça faitWhat it does Une fiche par entreprise (statut, domaines, compétences demandées et clés, besoin réel, contraintes, processus), les documents envoyés version par version, les contacts et relances, une fiche par projet réalisé, et la comparaison entre ce que demandent les offres et ce que démontrent les projets. One sheet per company (status, fields, requested and key skills, real need, constraints, process), documents sent version by version, contacts and follow-ups, one sheet per project, and a comparison of what offers ask for against what projects demonstrate.
  • SécuritéSecurity Un seul fichier sans dépendance, dont la politique de sécurité (CSP) interdit tout envoi réseau hors Google. Contenu jamais injecté comme HTML, import de fichier normalisé champ par champ, verrouillage optionnel AES-256-GCM, données rattachées à l'identifiant opaque du compte Google. A single dependency-free file whose content security policy (CSP) forbids any network call except to Google. Content is never injected as HTML, imported files are normalised field by field, optional AES-256-GCM lock, data bound to the opaque Google account identifier.
  • SynchronisationSync Connexion Google (modèle de jeton) puis un fichier dans l'espace caché de l'application, drive.appdata, dans le Drive de chaque utilisateur : tous les navigateurs conviennent, et je ne vois jamais ces données. Sans compte, sauvegarde dans un dossier choisi (Chrome, Edge) ou export JSON et CSV. Google sign-in (token model) then a file in the application's hidden space, drive.appdata, in each user's own Drive: any browser works, and I never see the data. Without an account, backup to a chosen folder (Chrome, Edge) or JSON and CSV export.
  • Ce qui reste à validerStill to validate La connexion avec un véritable compte Google et le sélecteur de dossier natif ont été testés avec des simulateurs ; un essai complet sur Chrome et Safari reste à faire. Pas de suite de tests automatisés. Sign-in with a real Google account and the native folder picker were tested with simulators; a full run on Chrome and Safari is still to do. No automated test suite.

CyberQuest

démo de la version client-serveur : connexion, carte réseau, niveaux Linux, Docker et DVWA, mission Active Directory, défis d'IA, fin de partie

demo of the client-server version: login, network map, Linux, Docker and DVWA levels, Active Directory mission, AI challenges, endgame

Mission Active Directory : chaque étape cite sa technique MITRE ATT&CK
Active Directory mission: each step cites its MITRE ATT&CK technique
Terminal, objectifs, indices et assistant « Mentor »
Terminal, objectives, hints and the "Mentor" assistant
Niveau Docker : déployer DVWA, puis l'attaquer
Docker level: deploy DVWA, then attack it
AI_CORE : défis de prompt injection contre des LLM
AI_CORE: prompt-injection challenges against LLMs
Fin de partie : le mainframe Nexus en alerte rouge
Endgame: the Nexus mainframe on red alert
Carte réseau et chronomètre de partie
Network map and game timer
  • Projet d'équipeTeam project Réalisé à quatre à l'INSA CVL (juin – octobre 2026). Dépôt d'origine : JamaiAli/CyberquestProject. Mon dépôt conserve l'historique Git complet et les droits de chaque auteur. Built by four students at INSA CVL (June – October 2026). Original repository: JamaiAli/CyberquestProject. My repository keeps the full Git history and each author's rights.
  • Ce que fait le jeuWhat the game does Une carte réseau (base Kali, commandes Linux, Active Directory, application web, cœur IA). Chaque machine ouvre un niveau avec un terminal, des objectifs à valider, des indices et un assistant « Mentor » qui répond aux questions. A network map (Kali base, Linux commands, Active Directory, web application, AI core). Each machine opens a level with a terminal, objectives to validate, hints and a "Mentor" assistant that answers questions.
  • Le parcours de la démoThe demo's path Bases de Linux, déploiement de DVWA avec Docker, injection de commande, injection SQL, mission Active Directory (reconnaissance réseau puis énumération DNS), défis de prompt injection sur des LLM, puis la fin de partie. Linux basics, deploying DVWA with Docker, command injection, SQL injection, an Active Directory mission (network reconnaissance, then DNS enumeration), prompt-injection challenges against LLMs, then the endgame.
  • Le contenuThe content 6 étapes Active Directory (chaque étape cite sa technique MITRE ATT&CK), 13 niveaux d'applications web inspirés de DVWA et de l'OWASP Top 10, 8 niveaux Linux, 2 défis d'IA et 6 niveaux de prompt injection. Tout est simulé : aucune commande ne touche un vrai réseau. 6 Active Directory steps (each cites its MITRE ATT&CK technique), 13 web-application levels inspired by DVWA and the OWASP Top 10, 8 Linux levels, 2 AI challenges and 6 prompt-injection levels. Everything is simulated: no command touches a real network.
  • Deux architecturesTwo architectures Une version client-serveur (branche master : Node.js, Express, SQLite) et une version entièrement embarquée dans le navigateur (branche proof-of-concept, sauvegarde locale). La démo ci-dessus montre la première. A client-server version (master branch: Node.js, Express, SQLite) and a version that runs entirely in the browser (proof-of-concept branch, local save). The demo above shows the first one.
  • Limites relevées par le rapportLimits listed in the report Aucun test automatisé, et la branche autonome ne se construit pas telle quelle avec Vite 8 (constat du 15 octobre 2026). Le rapport signale aussi que le README décrit la CSP, la signature des sauvegardes et l'audit plus favorablement que le code ne le justifie. No automated tests, and the standalone branch does not build as is with Vite 8 (found on 15 October 2026). The report also notes that the README describes the CSP, save signing and audit more favourably than the code justifies.

React 18 · Vite · xterm.js · Canvas 2D · Node.js

MedievAIl Battle

démo : menu, configuration de la bataille et choix des IA, déroulement du combat, victoire

demo: menu, battle set-up and AI choice, the fight, victory

Menu : nouvelle bataille, scénarios, chargement, options
Menu: new battle, scenarios, load, options
Choix de l'IA de chaque équipe
Choosing each team's AI
Les armées se déploient : effectifs de chaque équipe et mini-carte à l'écran
The armies deploy: each team's headcount and a mini-map on screen
Mêlée : chevaliers, piquiers et arbalétriers au contact
Melee: knights, pikemen and crossbowmen in contact
Fin de bataille : victoire de l'équipe B
End of the battle: team B wins
Vérification de la loi carrée de Lanchester sur la simulation de combat
Checking Lanchester's square law against the combat simulation
  • Projet d'équipeTeam project Projet Python et programmation orientée objet de la formation STI3A à l'INSA CVL (octobre 2025 – janvier 2026), réalisé à sept. Dépôt de référence : awa-b/python-project-2025-2026. Mon dépôt est un miroir : il conserve l'historique Git complet et les droits de chaque auteur. Python and object-oriented programming project of the STI3A course at INSA CVL (October 2025 – January 2026), built by seven students. Reference repository: awa-b/python-project-2025-2026. My repository is a mirror: it keeps the full Git history and each author's rights.
  • Ce que fait le jeuWhat the game does On configure une bataille (IA de chaque équipe, taille des armées, terrain), puis on la regarde se dérouler : chaque IA donne ses ordres aux unités et le moteur résout les combats. Le jeu se lance en interface graphique plein écran, en vue terminal (curses) ou en ligne de commande. You set up a battle (each team's AI, army size, terrain), then watch it play out: each AI gives orders to its units and the engine resolves the fights. The game runs in a full-screen graphical interface, a terminal view (curses) or on the command line.
  • ArchitectureArchitecture Architecture MVP : un modèle (unités, armées, règles de combat), un présentateur qui déroule la bataille, et des vues interchangeables. MVP architecture: a model (units, armies, combat rules), a presenter that runs the battle, and interchangeable views.

Python · POO · MVP

MedievAIl Battle · réseau pair-à-pairMedievAIl Battle · peer-to-peer network

démo : deux instances côte à côte, lobby multijoueur (choix de l'IA et de la zone de départ), combat, victoire

demo: two instances side by side, multiplayer lobby (AI and starting zone), the fight, victory

Lobby multijoueur : chaque joueur choisit son IA
Multiplayer lobby: each player picks an AI
Zone de départ, puis créer (hôte) ou rejoindre
Starting zone, then create (host) or join
Début du combat : les deux instances montrent la même partie
Start of the fight: both instances show the same game
Mêlée, vue par les deux joueurs
Melee, as seen by both players
Fin de partie : la victoire est synchronisée entre les deux
End of the game: the victory is synchronised on both sides
  • Projet d'équipeTeam project Projet réseaux de la formation STI3A à l'INSA CVL (octobre 2025 – avril 2026), réalisé à onze. Il prolonge la base du jeu Python. Dépôt de référence : YOUSSEF4315/STI3A-Projet_reseaux_1. Mon dépôt est un miroir : il conserve l'historique Git complet et les droits de chaque auteur. Networking project of the STI3A course at INSA CVL (October 2025 – April 2026), built by eleven students. It extends the Python game. Reference repository: YOUSSEF4315/STI3A-Projet_reseaux_1. My repository is a mirror: it keeps the full Git history and each author's rights.
  • Deux programmes par machineTwo programs per machine Chaque joueur lance le jeu et l'IA en Python, et un démon réseau en C. Ils se parlent en local par IPC ; seuls les démons dialoguent à travers le réseau, en pair-à-pair. Le programme Python n'a jamais conscience d'être en réseau. Each player runs the Python game and AI, and a C network daemon. They talk locally over IPC; only the daemons talk across the network, peer-to-peer. The Python program is never aware it is on a network.
  • Propriété réseauNetwork ownership Sans serveur, deux joueurs peuvent modifier la même unité en même temps. Règle retenue : une entité n'a qu'un seul propriétaire légitime à un instant donné, et pour agir sur une unité qu'il ne possède pas, un nœud négocie d'abord le transfert de propriété. With no server, two players can change the same unit at the same time. The rule: an entity has a single legitimate owner at any moment, and to act on a unit it doesn't own, a node first negotiates the transfer of ownership.
  • Deux versionsTwo versions Version 1 : diffusion « best-effort » sans garantie, d'où des unités en double, des « fantômes » et des états désynchronisés. Version 2 : réseau en C avec propriété réseau, anti-zombie, anti-désynchronisation, victoire synchronisée, délais d'attente et reprise après perte de paquets. Version 1: "best-effort" broadcast with no guarantee, hence duplicated units, "ghosts" and desynchronised states. Version 2: network layer in C with network ownership, anti-zombie, anti-desync, synchronised victory, timeouts and recovery after packet loss.
  • Pour l'essayerTo try it Le README du dépôt décrit un essai sur une seule machine (adresse 127.0.0.1) : compiler le démon avec gcc, lancer deux démons et deux instances du jeu. The repository README describes a single-machine test (address 127.0.0.1): build the daemon with gcc, then start two daemons and two game instances.

C · Python · UDP / TCP · IPC

Ouvrir le PDF ↗Open the PDF ↗