Projets Vus en Cours
Tableau de Bord - Pic du Midi
Développement d'un dashboard pour visualiser les indicateurs clés (météo, CA, visiteurs).
Affichage des indicateurs de performance clés : météo, nombre de visiteurs, chiffre d'affaires total et moyen par visiteur via des graphiques dynamiques avec Chart.js.
Projet DAO (Data Access Object)
Développement d'un modèle d'accès aux données en Java (Pattern DAO).
Ce projet sépare la logique métier de la logique d'accès à la base de données (MySQL) en utilisant un design pattern pour gérer les opérations CRUD de manière propre et maintenable.
Billetterie du Fâ - PHP/MVC
Application complète de réservation de billets avec architecture MVC, base de données et génération de PDF.
1. Contexte & Besoin
Le site archéologique du Fâ (Barzan) fait face à une forte affluence estivale. L'objectif était de
développer une application web pour fluidifier la gestion des entrées en permettant la
réservation en ligne.
Contraintes : Travail en méthode SCRUM, PHP 8 sans framework, Architecture MVC imposée.
2. Architecture & Choix Techniques
- Langage : PHP 8 (Typage fort, Attributs).
- Architecture : MVC (Modèle-Vue-Contrôleur) pour séparer la logique et l'affichage.
- Accès Données : Pattern DAO avec PDO pour sécuriser les requêtes SQL.
- Sécurité : Hashage des mots de passe, protection XSS/Injection SQL.
📁 Structure du projet (MVC)
- site
- controleurs
- images
- JS
- modeles
- polices
- style
- vues
- configBdd.php
- index.php
- process-confirmation.php
- README.md
3. Fonctionnalités Clés
A. Sélection des billets (Front-End)
Formulaire dynamique permettant de choisir le type de visite et la quantité de billets. Le total se met à jour en temps réel.
B. Validation et Enregistrement (Back-End)
Réception des données dans le contrôleur, validation des entrées, et insertion en base de données via le DAO. Utilisation de transactions SQL.
C. Confirmation et Facture PDF
Une fois la commande validée, l'utilisateur reçoit un récapitulatif et peut télécharger sa facture générée dynamiquement avec la librairie FPDF.
Projets Personnels
Développement Modulaire FiveM (Lua/NUI)
Création de scripts avancés (Autopilot, Lecteur Multimédia, Events) avec communication Client-Serveur et interfaces Web (NUI).
1. Contexte & Objectifs
Dans le cadre de l'amélioration de l'expérience utilisateur (UX) sur un serveur Roleplay, j'ai développé une
suite de scripts modulaires indépendants.
Objectif : Automatiser des tâches répétitives (conduite) et intégrer du contenu web externe
(YouTube) directement dans le moteur du jeu.
2. Architecture Technique
- Langage : LUA (Logique métier) & JavaScript (Interfaces).
- Architecture : Client-Serveur (OneSync) avec gestion d'événements (NetEvents).
- Interface (NUI) : HTML/CSS injecté dans le moteur de rendu Chromium de FiveM.
- Persistance : Utilisation des KVP (Key-Value Pairs) pour sauvegarder les données joueurs localement.
📁 Structure des ressources
- resources
- autopilot // Système de conduite
autonome
- client.lua
- config.lua
- fxmanifest.lua
- minitv // Intégration API YouTube
- html
- index.html
- script.js
- server.lua
- html
- autopilot // Système de conduite
autonome
3. Fonctionnalités Clés
A. Algorithme de proximité (Autopilot)
Le script calcule dynamiquement le point d'intérêt le plus proche (ex: Station essence) en comparant les vecteurs de coordonnées du joueur avec une liste de configuration.
local function getClosestVec3(list)
local playerCoords = GetEntityCoords(PlayerPedId())
local minDist, closest = nil, nil
for _, coords in ipairs(list) do
local dist = # (playerCoords - coords) -- Calcul vectoriel
if not minDist or dist < minDist then
minDist = dist
closest = coords
end
end
return closest, minDist
end
B. Communication NUI & API YouTube (MiniTV)
Intégration de l'iframe API YouTube via une page web transparente superposée au jeu. Le serveur envoie l'URL, et le JS extrait l'ID vidéo via Regex.
- Extraction d'ID vidéo via Regex JS.
- Synchronization lecture/pause entre tous les joueurs via événements serveur.
- Overlay CSS dynamique (Coin ou Plein écran).
4. Aperçu en Vidéo
Grand Strategy Game - Unity (C#) & LLM
Création d'un jeu de Grande Stratégie (type HOI4/Pax Historia) contemporain (~2020). Intégration d'une IA locale (LLM) générant des événements dynamiques.
1. Le Concept du Jeu
Passionné par les jeux de gestion "Grand Strategy", je conçois actuellement mon propre jeu centré sur la
direction d'une nation dans le monde contemporain (années 2020).
Le gameplay repose sur la gestion d'un budget, le maintien de la stabilité politique, l'écoulement du
temps, et la prise de décisions gouvernementales.
2. L'Innovation Clé : IA Locale (LLM)
- L'Intelligence d'Événements : Contrairement aux événements scriptés classiques, le jeu intègre un Modèle de Langage (LLM).
- Exécution Locale : L'IA tourne à 100% sur le PC du joueur pour l'autonomie et la rapidité. Lors de l'installation du jeu, le modèle est téléchargé et exécuté en local.
- Génération Dynamique : L'IA analyse l'état du pays (argent, stabilité) et s'appuie sur un contexte prédéfini pour générer des événements géopolitiques uniques et cohérents.
A. État Actuel du Projet (WIP)
Le projet est en phase de développement actif au niveau de son architecture logicielle. La logique de gestion du temps (Time Management), des finances (Money Logic), et de l'état du pays (Stability) est écrite en C#. Mon travail actuel se concentre sur l'UI/UX Design et l'intégration C# <-> LLM local.
3. Structure de Données d'un Pays (C#)
Voici un exemple de ScriptableObject utilisé comme base de données légère pour stocker les informations et l'état de chaque pays jouable dans le jeu :
using UnityEngine;
[CreateAssetMenu(fileName = "NewCountry", menuName = "PaxModerna/CountryData")]
public class CountryData : ScriptableObject
{
[Header("Informations Générales")]
public string countryName;
public Sprite flag; // Pour l'icône du drapeau
[Header("Économie")]
public double treasury; // Argent en banque
public float gdpGrowth; // Croissance du PIB
[Header("Politique & Social")]
[Range(0, 100)] public float stability;
public string leaderName;
}
Bot Discord - Veille Automatisée (Python & IA)
Création d'un bot Discord automatisant une veille géopolitique et cybersécurité via la lecture de flux RSS et de l'API Conflictly, résumée par l'API Gemini.
1. Le Concept du Bot
Ce projet vise à automatiser la collecte et l'analyse d'informations ciblées (géopolitique, cybersécurité,
actualités).
Le script Python parcourt un ensemble de sources (Flux RSS du Monde, Figaro, France Info, Hacker News,
Bleeping Computer, ZATAZ, France 24, ainsi que l'API Conflictly), extrait le contenu brut, le fait résumer
par une intelligence artificielle (Gemini 2.5 Flash de Google), puis envoie le résultat sur un serveur
Discord via un Webhook.
2. L'Architecture Technique
- Collecte des Données (Scraping/RSS) : Utilisation de
feedparserpour lire les flux RSS et detrafilaturapour extraire rapidement et proprement le texte des articles sans le superflu HTML. Requêtesrequestsvers l'API Conflictly. - Synthèse par IA (LLM) : Intégration du modèle
gemini-2.5-flashvia l'APIgoogle-genai. Un prompt stict force l'IA à résumer l'article en 3 points essentiels uniquement, peu importe la taille ou le format d'entrée (texte ou JSON). - Notification : Envoi des données formatées directement dans un salon Discord via un Webhook.
3. Extrait de Code (Python)
Voici la fonction chargée de générer le résumé via l'API Gemini :
def summarize_text(text, source_name="Un article"):
print(f"Generating summary for {source_name} with Gemini API...")
prompt = (
f"Voici des données brutes (texte ou JSON) provenant de la source : {source_name}.\n"
"Fais-moi un résumé très concis de l'événement en français, sous la forme "
"d'exactement 3 bullet points. Va directement à l'essentiel, "
"sans introduction ni conclusion supplémentaires.\n\n"
f"Données:\n{text}"
)
try:
response = client.models.generate_content(
model='gemini-2.5-flash',
contents=prompt
)
return response.text.strip()
except Exception as e:
print(f"Error generating summary: {e}")
return None
Hevil Game - "Rage Game" Web (JS Vanilla)
Création d'un jeu de plateforme web 2D punitif où le joueur doit utiliser des commandes Terminal pour hacker les niveaux et contourner les obstacles.
► Jouer au Jeu dans le Navigateur1. Le Concept du Jeu
Hevil Game est un prototype de jeu d'aventure développé intégralement côté client (Front-End) sans aucun
moteur prêt à l'emploi.
Le gameplay allie la dextérité de la plateforme classique avec une mécanique de puzzle unique : un
terminal de commande intégré (Touche 'T') permet au joueur d'injecter des commandes fictives (ex:
sudo rm -rf /wall ou sysctl -w player.speed=800) pour hacker la physique du jeu.
2. Architecture & Moteur 2D
- Boucle de Jeu Native : Utilisation exclusive de l'API HTML5
Canvaset derequestAnimationFramecouplé à undeltaTimepour une physique indépendante du framerate. - Physique & Collisions : Conception d'un moteur de physique de base (Gravité, Vecteurs de vitesse, Sauts) et gestion des collisions rigides 2D avec des boîtes AABB (Axis-Aligned Bounding Box).
- Niveaux Data-Driven : Génération procédurale des niveaux à partir de tableaux modélisés (LevelMap), couplés à un système d'évènements (Triggers) invisibles pour les pièges dynamiques.