Clean Architecture
Je privilégie une séparation claire des responsabilités afin que la logique métier reste indépendante des frameworks et des choix techniques. Cette approche facilite les tests, la maintenance et les évolutions futures.
// Full-Stack · Architecture · Systèmes distribués
Je considère le développement logiciel comme un exercice de résolution de problèmes avant d'être un exercice de programmation. Comprendre le besoin, identifier les contraintes et concevoir une solution adaptée sont des étapes aussi importantes que l'implémentation elle-même.
Au fil de mes projets académiques et personnels, j'ai appris à intervenir sur l'ensemble du cycle de développement : analyse des besoins, conception, développement, tests et déploiement. J'apprécie particulièrement les projets qui demandent de concilier exigences métier, qualité logicielle et évolutivité.
Je cherche constamment à améliorer ma manière de concevoir des logiciels en approfondissant des sujets tels que l'architecture logicielle, la modélisation métier, les systèmes distribués et les technologies émergentes. Pour moi, un bon logiciel n'est pas seulement fonctionnel : il doit être compréhensible, maintenable et capable d'évoluer avec les besoins.

Software Engineer · Full-Stack Developer
Casablanca, Maroc
Les technologies évoluent rapidement, mais certains principes restent intemporels. Ils guident ma manière de concevoir des logiciels robustes, maintenables et adaptés aux besoins réels.
Je privilégie une séparation claire des responsabilités afin que la logique métier reste indépendante des frameworks et des choix techniques. Cette approche facilite les tests, la maintenance et les évolutions futures.
J'accorde une grande importance à la compréhension du métier avant l'implémentation. Un logiciel est plus facile à faire évoluer lorsqu'il reflète fidèlement le langage et les règles du domaine qu'il modélise.
Je préfère une solution simple, lisible et adaptée au contexte plutôt qu'une architecture complexe introduite prématurément. La complexité ne doit apparaître que lorsqu'elle répond à un besoin réel.
Je conçois des applications capables d'évoluer progressivement, qu'il s'agisse d'ajouter de nouvelles fonctionnalités, de faire grandir l'équipe ou d'augmenter la charge, sans remettre en cause les fondations du projet.
Je maîtrise l'ensemble de la chaîne : backend robuste, frontend performant, mobile natif-cross, bases de données et architectures distribuées.
Une sélection de mes projets principaux, conçus avec des architectures et standards modernes.
La facturation moderne pour freelances et TPE.
Plateforme moderne de facturation destinée aux freelances, indépendants et petites entreprises. Conçue comme un produit SaaS complet, de la gestion des clients au suivi des paiements.
Files d'attente virtuelles, synchronisées en temps réel.
Application web et mobile de gestion de files d'attente virtuelles en temps réel. Pensée pour les commerces, administrations et événements qui veulent fluidifier l'attente physique.
Suivi GPS et gamification pour la course à pied.
Application mobile de suivi GPS et de gamification. Transforme la course en expérience engageante avec défis, badges et classements.
Formation, projets et expériences qui ont forgé ma manière de concevoir le logiciel.
Faculté des Sciences et Techniques (FST) de Mohammedia
Mohammedia, Maroc
Faculté des Sciences et Techniques de Béni Mellal
Béni Mellal, Maroc
Lycée Municipal de Titao
Titao, Burkina Faso
Ingénierie logicielle
Conception, développement, déploiement d'applications complexes.
Architecture logicielle
Clean Architecture, DDD, microservices, design patterns.
Développement web & mobile
Full-stack, React, React Native, API REST.
Algorithmique
Structures de données, complexité, optimisation.
Systèmes distribués
Concurrence, synchronisation, tolérance aux pannes.
Bases de données
Modélisation, SQL, NoSQL, optimisation.
DevOps
Docker, CI/CD, déploiement, observabilité.
Gestion de projet Agile
Scrum, itératif, livraison continue.
Et plus loin : contribuer à des projets de recherche et d'ingénierie mêlant intelligence artificielle, systèmes distribués et logiciels à grande échelle.
Un setup pensé pour la productivité, le typage strict et l'expérience développeur — du terminal au déploiement.
Éditeur principal pour le développement web frontend et les projets TypeScript.
Agent d'ingénierie IA avancé développé par Google DeepMind pour le pair programming.
Gestion de versions distribuée pour le suivi des modifications du code source.
Hébergement de code, revues de pull requests et workflows CI/CD automatisés.
Conteneurisation d'applications pour garantir la cohérence entre le développement et la production.
Définition et exécution d'applications multi-conteneurs pour l'environnement local.
Tests, débogage et documentation d'APIs REST de manière collaborative.
Conception d'interfaces utilisateur, wireframes et prototypage interactif.
Système d'exploitation principal pour le développement et l'administration au quotidien.
Environnement WSL et serveurs de déploiement pour la compatibilité Linux.
Je partage ce que j'apprends en construisant : architecture, systèmes distribués, temps réel, et l'art de concevoir du logiciel qui dure.
Pourquoi isoler votre logique métier des détails techniques change tout — et comment le faire concrètement avec NestJS.
Comment Redis pub/sub permet de synchroniser des milliers de clients temps réel à travers plusieurs instances backend.
Ubiquitous language, bounded contexts, agrégats — les outils pour que votre code parle le langage du métier.
Recrutement, mission freelance ou simple échange — je réponds sous 24h.
Au sein d'une entreprise internationale, sur des défis d'architecture, de systèmes distribués ou de produits à fort impact.
Missions de conception & développement full-stack pour startups et clients exigeants.
À long terme, contribuer à des projets mêlant intelligence artificielle, systèmes distribués et logiciels à grande échelle.
Quelques informations suffisent pour démarrer la conversation.
Vous préférez un appel ? Envoyez-moi un email et nous planifierons.