Ayoub
MACHKOUR
Actuellement en double diplôme d'ingénieur : généraliste à l'ENIB et en génie logiciel à l'École Polytechnique d'Agadir


Qui suis-je ?
Bonjour ! Je suis Ayoub Machkour, étudiant en double diplôme d'ingénieur, mon parcours pluridisciplinaire m'a permis de développer une vision globale du cycle de vie d'un logiciel, avec une application des méthodes agiles. Autonome et motivé, je souhaite approfondir mes compétences dans un environnement dynamique et contribuer activement à des projets innovants.
Mon Expérience Professionnel
Mon éducation
Mes Compétences
Ma formation et mes projets m'ont permis de maîtriser divers langages de programmation et outils essentiels. Ces compétences sont cruciales pour exceller en tant qu'ingénieur en informatique.
Projets et Réalisation
Les projets suivants illustrent ma capacité à appliquer des connaissances théoriques dans des scénarios pratiques. Chacun reflète une étape essentielle de mon parcours académique et professionnel, mettant en évidence ma progression dans diverses compétences techniques.

Stage Développeur Full Stack : Optimisation et Amélioration de la génération du programme pédagogique
Conception et implémentation d'un système automatisé pour la gestion et la génération de documents pédagogiques.

Éditeur de Peinture Avancé - PyQt5
Application de peinture professionnelle avec outils avancés, opérations de groupe et interface intelligente.

Générateur de Signaux Harmoniques
Application Python avec TkInter pour générer et visualiser des signaux harmoniques en temps réel, patterns Observer et MVC.

Musée Virtuel en BabylonJS
Création d'une expérience de musée interactive en 3D.

Mu Torere avec Apprentissage Renforcé en Python
Création d'un jeu basé sur l'apprentissage renforcé pour le jeu Mu Torere.

API REST pour Gestion de Bibliothèque Vidéo
API REST en Spring Boot pour la gestion d'une bibliothèque vidéo.

Gestion de Produits avec Angular
Application CRUD de gestion de produits en Angular avec serveur JSON.

Application d'Analyse de Sentiments avec Flask
Analyse de sentiments en temps réel grâce à un modèle de traitement du langage naturel (NLP).

Gestion de Produits avec React
Application CRUD pour gérer des produits, développée avec React.

Jeu Vidéo Flappy Bird avec Unity
Programmation d'un jeu vidéo basé sur le célèbre Flappy Bird.

Site Web E-commerce avec HTML, CSS, et PHP
Création d'une plateforme de commerce électronique avec gestion des produits et commandes.

Système de Gestion des Chauffeurs avec Java Swing
Développement d'une application CRUD pour la gestion des chauffeurs avec Java Swing.

Maquette d'Application de Covoiturage avec Adobe XD et Flutter
Conception et développement d'une application de covoiturage

Bibliothèque en ligne avec ReactJS
Développement d'une bibliothèque en ligne

Dôme Géodésique avec SolidWorks
Conception et modélisation d'un dôme géodésique avec SolidWorks.

Contrôle de Moteur Synchrone PMSM
Système complet de contrôle vectoriel (FOC) pour moteur PMSM avec STM32 et interface Qt via bus CAN.

Projet CAN Bus - Système Multi-Capteurs
Architecture distribuée avec 3 cartes STM32, communication CAN et interface Qt pour acquisition de données multi-capteurs.

Calculette Vectorielle sur LPC55S69
Interface terminal VT100, système de fichiers FAT sur carte SD et raccordement libc pour calculette vectorielle embarquée.

TP OS ARM - Système d'Exploitation Multitâche
Implémentation d'un OS multitâche complet pour ARM Cortex-M33 avec ordonnancement, sémaphores, mutex et VFS.

Stage Technicien : Configuration d'une Solution de Sécurité et de Gestion des Réseaux avec pfSense
Configuration d'une solution de sécurité et gestion des réseaux avec pfSense.
Langages

TP OS ARM - Système d'Exploitation Multitâche
Implémentation d'un système d'exploitation multitâche complet pour ARM Cortex-M33 (carte LPC55S69-EVK). Ce projet éducatif a été développé entièrement "from scratch" avec MCUXpresso IDE, offrant une compréhension approfondie des mécanismes internes d'un OS embarqué.
Architecture du système :
- Code Applicatif : Mode Thread unprivileged avec support multitâches
- Noyau : Mode Handler privileged pour la gestion système
- Communication : Appels système via instructions SVC
Fonctionnalités principales :
- Gestion des tâches : Création dynamique, ordonnancement round-robin (10ms), terminaison propre
- Synchronisation : Sémaphores et mutex pour l'exclusion mutuelle
- Gestion du temps : Timer SysTick 1ms, temporisation précise
- Périphériques : LEDs RGB, bouton USER avec interruptions
- VFS : Interface fichiers virtuels (/dev/leds, /dev/test)
Détails techniques : Le context switch utilise l'exception PendSV pour la commutation de tâches. La sauvegarde du contexte combine la sauvegarde automatique (R0-R3) et manuelle (R4-R11). Le système implémente 10 modes de test différents, de la création basique de tâches aux drivers avancés.
Ce projet démontre une maîtrise complète des concepts de systèmes embarqués : gestion de la mémoire, ordonnancement temps réel, synchronisation inter-tâches et programmation système de bas niveau.

Éditeur de Peinture Avancé - PyQt5
Application de peinture professionnelle développée avec PyQt5, offrant des outils de dessin avancés, des opérations de groupe sophistiquées et des interactions UI intelligentes. Ce projet exploite le Graphics View Framework pour un rendu optimisé des objets 2D.
Outils de dessin :
- Crayon : Dessin libre avec trajectoires fluides
- Gomme : Suppression précise d'objets sélectionnés
- Formes géométriques : Lignes, rectangles, ellipses, polygones
- Texte intelligent : Dialogue avancé avec police, taille, couleur
- Sélection avancée : Manipulation et groupement d'objets
Opérations de groupe avancées :
- Multi-sélection : Ctrl + Clic pour sélection multiple
- Déplacement groupé : Tous les éléments bougent ensemble
- Copier/Coller de groupe : Positions relatives préservées
- Suppression en lot : Via la touche Suppr
Fonctionnalités avancées : L'interface propose des styles de ligne variés (normal, gras, pointillé, tirets), des couleurs personnalisables, des motifs de remplissage multiples avec aperçu temps réel. La gestion des fichiers supporte le format JSON pour la sauvegarde complète du projet et l'export en images (PNG, JPEG, BMP).
Architecture MVC : Le projet implémente une séparation claire entre le modèle, la vue et le contrôleur, garantissant une maintenance aisée et une extensibilité optimale.

Générateur de Signaux Harmoniques
Application graphique Python sophistiquée pour générer, visualiser et contrôler des signaux harmoniques en temps réel. Ce projet implémente rigoureusement les patrons de conception Observer et MVC avec une interface TkInter moderne et responsive.
Fonctionnalités principales :
- Deux générateurs indépendants : X et Y avec contrôles séparés (fréquence, magnitude, phase, harmoniques)
- Visualisation temps réel : Graphiques instantanés des signaux générés
- Mode X-Y : Analyse des relations complexes entre signaux
- Persistance SQLite : Sauvegarde/chargement automatique des configurations
- Interface adaptative : Redimensionnement automatique et ergonomie optimisée
Formule mathématique implémentée :
y(t) = Σ(h=1→H) (M/h) * sin(2π * f * h * t - φ)
Où M = Magnitude, f = Fréquence, φ = Phase, H = Harmoniques
Architecture logicielle :
- Pattern Observer : Generator (Subject) → Screen (Observer) pour mise à jour automatique
- Pattern MVC : Séparation claire entre modèles (calculs), vues (interface) et contrôleurs (événements)
- Base SQLite : Tables 'signals' et 'samples' pour persistance complète
Ce projet démontre une maîtrise avancée des patterns de conception, du calcul mathématique temps réel et de l'interface utilisateur moderne avec Python.

Contrôle de Moteur Synchrone à Aimants Permanents (PMSM)
Système complet de contrôle vectoriel (FOC - Field Oriented Control) pour moteur synchrone à aimants permanents avec table linéaire. Le projet combine une carte STM32 pour le contrôle moteur temps réel et une interface graphique Qt pour le pilotage via bus CAN.
Composants matériels :
- STM32F446 : Microcontrôleur principal pour le contrôle temps réel
- Moteur PMSM : Moteur synchrone à aimants permanents haute performance
- Onduleur triphasé : Génération des tensions de commande
- Codeur incrémental : Mesure précise de position/vitesse
- Fins de course : Sécurité et positionnement automatique
- Interface CAN : Communication bidirectionnelle avec l'IHM
Modes de fonctionnement :
- STOP : Arrêt complet du moteur, sécurité par défaut
- NORMAL : Fonctionnement continu avec arrêt automatique aux fins de course
- CHANGEMENT DE SENS : Inversion automatique pour mouvement de va-et-vient
Interface utilisateur Qt : L'IHM permet la sélection du mode de fonctionnement, le réglage de vitesse (0-100%), le positionnement de cible (0-1000), la visualisation de position temps réel et l'état des fins de course.
Communication CAN : Messages standardisés pour les commandes (ID: 0x200) et retours d'état (ID: 0x100), incluant position actuelle, état des fins de course et machine d'état système.
Ce projet illustre une expertise complète en contrôle moteur avancé, électronique de puissance et systèmes temps réel embarqués.

Projet CAN Bus - Système Multi-Capteurs
Architecture distribuée sophistiquée composée de trois cartes STM32 spécialisées, communiquant via bus CAN avec une interface Qt centralisée. Ce système démontre une approche modulaire pour l'acquisition de données multi-capteurs en temps réel.
Architecture du système :
- Carte 1 - Capteurs environnementaux (ID_1) : VL6180X (distance/luminosité), LPS22HB (pression), HTS221 (humidité/température)
- Carte 2 - Centrale inertielle (ID_2) : MPU9250 avec accéléromètre, gyroscope, magnétomètre et calcul d'orientation (angles d'Euler)
- Carte 3 - Moteur et anémomètre (ID_3) : Moteur Dynamixel avec contrôle de vitesse et anémomètre pour mesure du vent
Approche méthodologique : Le développement a suivi une progression rigoureuse : développement et test individuel de chaque carte, intégration progressive sur le bus CAN, puis optimisation globale pour résoudre les problèmes de surcharge et de latence.
Optimisations de communication :
- Réduction du trafic CAN : Envoi conditionnel lors de changements significatifs
- Temporisations différenciées : Selon l'importance des données
- Détection de pertes : Compteurs de messages intégrés
- Filtrage CAN : Chaque carte reçoit uniquement les messages pertinents
Interface Qt avancée : L'interface permet la réception/affichage temps réel de tous les capteurs, le contrôle du moteur Dynamixel, la visualisation 3D de l'orientation MPU9250 et le changement de mode du capteur VL6180X.
Messages CAN standardisés : Protocole défini avec identifiants spécifiques (0x01-0x03 pour commandes, 0x22-0x26 et 0x85-0x95 pour données) et formats de messages optimisés pour chaque type de capteur.

Calculette Vectorielle sur LPC55S69
Projet embarqué avancé sur microcontrôleur NXP LPC55S69 (dual Cortex-M33) implémentant une calculette vectorielle complète avec interface terminal sophistiquée, système de fichiers et raccordement système de bas niveau.
Interface Terminal VT100 :
- Séquences VT100 avancées : Reconnaissance des touches de navigation, édition complète
- Synchronisation curseur : Entre fonction d'édition et terminal
- Coloration intelligente : Différents modes (édition, erreur, résultat)
- Historique des commandes : Navigation avec flèches haut/bas
Système de fichiers FAT :
- Protocole SDIO : Accès carte SD haute vitesse
- FatFS intégré : Système de fichiers FAT32 complet
- Opérations avancées : ls, cd, mkdir, rm avec navigation arborescente
- Détection temps réel : Événements connexion/déconnexion carte
Raccordement libc/FatFS : Implémentation sophistiquée des fonctions standard C (open, read, write, close) avec adaptation vers FatFS, gestion des descripteurs de fichiers et conversion automatique des flags système.
Architecture mémoire optimisée :
- Flash (640kB) : 0x00000000 - 0x0009FFFF
- SRAMX (32kB) : Code CPU1 à 0x04000000
- CPU0 SRAM (96kB) : Data, stack, heap à 0x20000000
- Calc SRAM (96kB) : Stack calculatrice à 0x20018000
Ce projet démontre une maîtrise complète des systèmes embarqués : interfaçage bas niveau, gestion mémoire optimisée, systèmes de fichiers et interface utilisateur avancée.

Stage Développeur Full Stack : Optimisation et Amélioration de la génération du programme pédagogique
L'École Nationale d'Ingénieurs de Brest (ENIB), récemment transformée en établissement public à caractère scientifique, culturel et professionnel (EPSCP), rejoindra en 2025 le nouvel Institut National Polytechnique de Bretagne (INP Bretagne) aux côtés de l'ESIAB et de l'IAE. Cette transformation institutionnelle marque une étape importante dans le développement de l'école, visant à élargir son offre académique et à répondre aux standards des établissements d'ingénieurs de haut niveau. Dans ce cadre, l'ENIB enrichit son offre de formation avec l'ouverture de la nouvelle voie de formation FISEA (Formation Initiale sous Statut Apprenti), accréditée par la Commission des Titres d'Ingénieur (CTI), en complément de la formation classique FISE (Formation Initiale sous Statut Étudiant).
La formation FISE offre un parcours classique sous statut étudiant, tandis que FISEA propose un modèle hybride combinant une première année sous statut étudiant et deux années en alternance. Ces deux formations doivent répondre à des exigences strictes en termes de gestion documentaire, notamment pour satisfaire aux audits réguliers de la CTI, qui exige une documentation précise et structurée des programmes pédagogiques, et aux attentes des OPCO (Opérateurs de Compétences), responsables du financement et du suivi des apprentis en entreprise. De plus, les services entreprise, scolarité et relations internationales de l'école nécessitent également des documents pédagogiques adaptés pour des usages spécifiques, tels que les mobilités étudiantes et les échanges académiques.
Pour répondre à ces besoins croissants, un système automatisé a été conçu, permettant de générer des documents pédagogiques sous forme de PDF personnalisés. Ces documents peuvent être produits pour l'ensemble d'une formation ou pour un étudiant spécifique, en fonction des cours suivis et des besoins identifiés par les différents services. Cette solution repose sur Typst, une alternative moderne et plus performante que LaTeX, offrant une génération rapide des documents, une maintenance simplifiée des templates et une réduction significative des temps de compilation.
Plusieurs outils ont été développés pour enrichir ce système :
- Un contrôle des fichiers Markdown via le terminal, permettant de gérer les données pédagogiques en un seul lot, garantissant la cohérence des informations et réduisant les risques d'erreur lors des mises à jour.
- Une intégration complète avec GitLab, où les enseignants peuvent directement modifier les fichiers Markdown des cours. Ces modifications sont ensuite validées par un ingénieur pédagogique avant d'être intégrées, assurant ainsi la conformité des données.
- Une interface web intuitive, développée avec Flask, destinée principalement au personnel administratif. Cette interface permet de générer, supprimer et visualiser l'état des fichiers générés (JSON, Typst, PDF) pour les deux formations, FISE et FISEA. Elle offre également la possibilité de personnaliser le document, notamment la page de garde, l'organisation des sections, et d'autres paramètres configurables. Enfin, l'interface permet de déclencher la génération complète des documents pédagogiques, ou de générer individuellement une catégorie spécifique de fichiers (JSON, Typst ou PDF), le tout sans nécessiter de compétences techniques.
Ce projet a permis de centraliser toutes les données pédagogiques dans des fichiers JSON et Markdown, garantissant une source unique de vérité. Cette centralisation élimine les incohérences et facilite une synchronisation parfaite des données entre les différents services de l'école. Les processus automatisés répondent désormais de manière efficace aux attentes des acteurs institutionnels et pédagogiques, tout en offrant une solution évolutive pour l'intégration future de nouvelles formations.

Dôme Géodésique avec SolidWorks
Ce projet est inscrit dans le cadre du module projet éco-responsable (PER) à l'ENIB. L'objectif était de mettre en application les connaissances et compétences acquises lors de la formation en proposant une solution technique à un problème environnemental ou sociétal posé par un tiers issu de la société.
Ce projet portait sur la réalisation d'un dôme géodésique à l'ENIB. Notre étude a inclus le choix des matériaux, l'impact carbone, l'autonomie en énergie, ainsi que la proposition de solutions techniques (low tech, etc.). Nous avons testé la structure et les matériaux choisis. Le dôme devait être modulable afin de permettre des modifications de la structure (matériaux, revêtement, etc.) et l'intégration de solutions low-tech d'autonomie (énergie, eau, etc.). Ces modifications et solutions pourraient être directement mises en place et testées sur le dôme.
Ce projet a été réalisé en open source et mené en collaboration avec des étudiants de l'École européenne supérieure d'art de Bretagne (EESAB), ainsi qu'avec Erwan Burel, chargé de mission en filière forêt bois et biosourcés et des étudiants BTS suivant une formation aux métiers du bois au Lycée de l'Elorn.
Le dôme avait une surface inférieure à 20 m² et une autonomie énergétique inférieure à 1 kW de puissance initiale. De plus, il devait respecter des critères de durabilité et avoir un faible impact carbone, notamment en proposant des solutions low-tech.
J'ai été responsable de la modélisation du dôme en utilisant SolidWorks, ainsi que du choix du type de jointure à utiliser pour connecter les triangles entre eux. J'ai également participé à la réalisation d'une maquette de ce dôme en utilisant des allumettes.

Musée Virtuel en BabylonJS
Dans le cadre de notre module de Réalité Virtuelle à l'ENIB, nous avons été chargés de développer un musée virtuel en utilisant BabylonJS, une puissante bibliothèque JavaScript open-source dédiée à la création d'applications 3D interactives directement dans les navigateurs web. Notre musée s'inscrit dans l'étude de la Belle Époque, de 1880 à 1914, et exploite les capacités avancées de BabylonJS pour orchestrer un espace muséal de 30m x 30m avec des fonctionnalités de réalité virtuelle enrichies.
Le musée comprend un hall principal, trois salles et une mezzanine accessible via un escalier. Les salles accueillent 8 à 10 tableaux, tandis que le hall et la mezzanine abritent des statues animées, toutes adaptées au thème de la Belle Époque. Les visiteurs peuvent interagir avec les œuvres d'art et se déplacer dans le musée grâce à des téléporteurs, créant ainsi une expérience immersive unique. Lorsqu'un visiteur s'approche d'un tableau, son nom apparaît au-dessus et une description en dessous. Si le visiteur s'éloigne, le nom et la description disparaissent. De plus, les portes s'ouvrent lorsque le visiteur s'approche et se ferment lorsqu'il s'éloigne. Les téléporteurs, sous forme de sphères noires placées à divers endroits du musée, deviennent rouges lorsque le visiteur les regarde. En cliquant sur le bouton gauche de la souris, le visiteur est téléporté à la position de la sphère.
J'ai été responsable de la configuration des éléments dans le musée, des choix de matériaux, ainsi que des mécanismes d'interaction, offrant une expérience éducative immersive. J'ai également traité les défis rencontrés et les solutions adoptées pour surmonter ces obstacles.

Mu Torere via Reinforcement Learning avec Python
Dans le cadre du module Intelligence Artificielle et Simulation à l'ENIB, j'ai développé un système d'apprentissage automatique pour jouer au jeu Mu Torere, un jeu de stratégie traditionnel des Maoris de Nouvelle-Zélande. Le projet utilise l'apprentissage par renforcement pour permettre au programme d'apprendre et de maîtriser le jeu en s'entraînant contre lui-même.
Le Mu Torere se joue avec quatre pions par joueur sur un plateau à neuf emplacements. Les algorithmes de renforcement utilisés incluent Q-learning et Sarsa. Chaque agent perçoit l'état du plateau et choisit parmi neuf actions possibles. Les agents reçoivent un renforcement positif pour une victoire et un renforcement négatif pour une défaite ou un coup illégal, ce qui les guide dans l'apprentissage des règles et des stratégies gagnantes.
J'ai mené le développement des agents intelligents et l'intégration des mécanismes d'apprentissage par renforcement. Les principaux défis étaient la modélisation précise des règles du jeu et l'ajustement des paramètres de l'algorithme pour optimiser l'apprentissage. Ce projet a démontré la puissance de l'apprentissage par renforcement dans les jeux de stratégie.

Bibliothèque en ligne avec ReactJS
Dans le cadre du module Développement Web 2 à l'École Polytechnique, nous avons été chargés de développer un site web en utilisant ReactJS, et moi j'ai choisi de créer une bibliothèque en ligne.
Cette application permet aux utilisateurs de gérer leur propre collection de livres. J'ai implémenté des fonctionnalités de base telles que l'affichage des couvertures, des titres, des auteurs et des prix des livres.
Les principales fonctionnalités incluent :
- Affichage des couvertures, des titres, des auteurs et des prix des livres.
- Ajout et suppression de livres au panier avec un compteur dynamique.
- Gestion du panier avec possibilité d'augmenter ou de diminuer le nombre de copies de chaque livre, ainsi qu'un bouton pour supprimer des articles.
- Calcul automatique du montant total du panier.
- Récapitulatif des livres achetés avec un bouton "Passer à la Commande" pour accéder directement à la page de paiement.

Site Web E-commerce avec HTML, CSS, et PHP
Réalisé dans le cadre du module Technologie Web à l'École Polytechnique, ce projet consistait à créer un site web e-commerce en utilisant HTML, CSS, JavaScript, et PHP. Le site comprend une partie client pour la navigation et l'achat de produits, ainsi qu'une partie administrateur pour la gestion des produits, des commandes et des utilisateurs. Ce projet a permis de mettre en pratique diverses compétences en développement web, notamment la création de pages dynamiques, la gestion de bases de données et l'implémentation de fonctionnalités de sécurité.

Application d'Analyse de Sentiments avec Flask
Ce projet consiste à développer une application web permettant d'analyser les sentiments exprimés dans des textes. Le modèle utilisé pour l'analyse a été créé et entraîné à partir d'un dataset public. Une fois entraîné, le modèle a été téléchargé et utilisé dans une application Flask.
L'application permet aux utilisateurs de soumettre un texte, et le modèle effectue une classification des sentiments comme positifs ou négatifs. Flask est utilisé pour gérer le backend et l'API qui interagit avec le modèle.
Ce projet m'a permis d'acquérir de l'expérience en traitement du langage naturel (NLP), en entraînement de modèles d'apprentissage automatique, ainsi qu'en développement d'applications web avec Flask.

Système de Gestion des Chauffeurs avec Java Swing
Cette application développée en Java Swing permet de gérer les chauffeurs, offrant des fonctionnalités de création, visualisation, modification et suppression d'enregistrements. L'application dispose d'une interface graphique conviviale pour la gestion des opérations, ce qui permet de faciliter l'organisation et la manipulation des informations sur les chauffeurs.

API REST pour Gestion de Bibliothèque Vidéo avec Spring Boot
Ce projet est une API REST développée en Spring Boot pour la gestion d'une bibliothèque vidéo. L'application permet d'effectuer des opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) sur les acteurs, catégories et films de la base de données.
L'API repose sur Spring Data JPA pour gérer les données, avec une base de données H2 en mémoire pour un environnement de test. Chaque entité (acteurs, catégories, films) dispose de ses propres endpoints pour la gestion des enregistrements, accessibles via des requêtes HTTP.
Le projet intègre également Swagger pour la documentation de l'API et pour faciliter les tests des endpoints. Des tests unitaires sont aussi inclus dans le projet, utilisant JUnit pour garantir la fiabilité des différentes fonctionnalités.
En plus de la gestion de la bibliothèque vidéo, le projet inclut une console H2 , permettant aux utilisateurs de visualiser et manipuler les données stockées dans la base.

Gestion de Produits avec Angular
Ce projet est une application web développée en Angular, permettant de gérer un catalogue de produits. L'application offre des fonctionnalités de création, consultation, modification et suppression (CRUD) des produits via une interface utilisateur interactive.

Gestion de Produits avec React
Ce projet consiste en une application de gestion de produits utilisant React pour l'interface utilisateur. Elle permet de réaliser des opérations CRUD (ajouter, consulter, modifier, supprimer) sur une base de produits. L'application est conçue pour être réactive et offrir une expérience utilisateur fluide.

Jeu Vidéo Flappy Bird avec Unity
Dans le cadre du module de Réalité Virtuelle à l'ENIB, nous avons été chargés de développer un jeu vidéo utilisant Unity, et j'ai choisi de réaliser le célèbre jeu Flappy Bird. Ce projet représente ma première expérience avec Unity et le langage C#. Tous les graphismes ont été générés avec DALL-E.
Le développement du jeu a inclus plusieurs étapes clés :
Ajout de graphismes en tant que sprites : Les éléments visuels du jeu, tels que l'oiseau, les tuyaux et l'arrière-plan, ont été importés en tant que sprites dans Unity. DALL-E a été utilisé pour générer ces graphismes de manière originale et attrayante.
Installation de composants pour la gestion de la physique et des collisions : Les composants de physique dans Unity ont été configurés pour gérer le mouvement de l'oiseau et les collisions avec les tuyaux. Cela inclut l'ajout de composants Rigidbody2D et Collider2D aux objets pertinents.
Génération dynamique des tuyaux : Un système de génération procédurale pour les tuyaux a été implémenté, assurant qu'ils apparaissent à intervalles réguliers avec des positions verticales aléatoires, ajoutant un défi constant pour le joueur.
Mise en place du système de score : Un système de score affiché en haut à gauche de l'écran a été développé pour suivre les points du joueur, qui augmentent à chaque passage réussi entre les tuyaux.
Optimisation des performances : Afin de garantir une expérience de jeu fluide, les éléments du jeu ont été optimisés en minimisant les calculs inutiles et en gérant efficacement les objets de jeu actifs et inactifs.
Ce projet a permis de maîtriser les bases du développement de jeux avec Unity et de comprendre les concepts essentiels de la physique des jeux, de la gestion des collisions et de l'interface utilisateur. Une expérience précieuse dans la génération dynamique de contenu et l'optimisation des performances a également été acquise pour assurer une expérience de jeu agréable.

Maquette d'Application de Covoiturage avec Adobe XD et Flutter
Dans le cadre du projet Fikra de 4ème année à l'École Polytechnique d'Agadir, nous devions réaliser un projet innovant en étudiant le marché, la cible, les types et niveaux d'innovation, le benchmark autour du produit et le business model. Mon groupe a choisi de créer une application de covoiturage appelée ByBike, une application de partage de motos similaire à Indriver.
ByBike permet aux utilisateurs de réserver facilement une moto disponible à proximité pour leurs trajets, offrant ainsi une alternative pratique et rapide aux autres modes de transport. Le projet s'ancre dans la volonté de répondre à des défis contemporains de mobilité urbaine, proposant une solution agile et durable face à l'urbanisation croissante et aux problèmes de congestion des villes. En offrant une alternative de transport individuel flexible, notre projet ambitionne de désengorger le trafic et de réduire l'empreinte carbone.
J'étais responsable de la création du logo et de toutes les maquettes de l'application, y compris les parties client et chauffeur. Après la phase de conception, nous avons procédé au développement en utilisant le langage Dart, Flutter pour le front-end, et Firebase pour gérer l'authentification. J'ai également codé plusieurs interfaces de l'application.

Stage Technicien : Configuration d'une Solution de Sécurité et de Gestion des Réseaux avec pfSense
Ce projet a été réalisé lors d'un stage de 3 mois, axé sur la configuration d'une solution de gestion et de sécurité des réseaux en utilisant pfSense. L'objectif principal était de sécuriser les infrastructures réseau tout en optimisant la gestion du trafic et des utilisateurs.
Parmi les technologies implémentées figurent :
- Squid et SquidGuard : Configuration de Squid pour le filtrage du contenu et gestion des règles de filtrage avec SquidGuard.
- Snort IDS/IPS : Mise en place d'un système de détection et de prévention des intrusions pour sécuriser le réseau.
- pfBlockerNG : Utilisation de pfBlockerNG pour bloquer des catégories de sites non autorisées, renforçant ainsi la sécurité.
- Portail Captif : Mise en place d'un portail captif pour authentifier les utilisateurs avant qu'ils puissent accéder à Internet.
Le stage m'a permis de développer des compétences pratiques dans la configuration et la sécurisation des réseaux, ainsi que dans l'utilisation avancée de pfSense pour répondre aux besoins de l'entreprise.
Intéressé par mon profil ?