Disponible en temps partiel et en freelance Je suis ingénieur logiciel

Ezzoubeir Elasraoui: Je construis le logiciel, et les machines qui le font tourner.

Ingénieur full-stack basé à Rabat. J'aime le métier en entier : démêler un domaine compliqué, construire les écrans que les gens utilisent tous les jours, puis monter les serveurs, les sauvegardes et les tableaux de bord qui me préviennent quand quelque chose casse. Je prépare aussi un doctorat en sécurité mobile à l'Université Mohammed V. J'utilise beaucoup Claude Code, et les choix d'architecture, de sécurité et de données, je les fais moi-même.

2,600+
tests automatisés sur PGSH
6,000+
étudiants dans la base PGSH
5
VM montées sur un seul hôte ESXi
€0
par mois pour héberger Balagh
Défiler
.NET 9 PostgreSQL React 19 TypeScript Next.js Python FastAPI Tauri Docker VMware ESXi Keycloak OpenTelemetry Grafana AWS Cloudflare Supabase Ollama Claude Code

La plupart de ce que je construis tourne là où personne ne regarde : sur les serveurs d'une faculté, sur le portable d'un avocat sans connexion, sur des offres gratuites qui ne coûtent rien. Ça doit marcher le lundi matin, même quand je ne suis pas là.

Projets choisis

Ce qui tourne en production

PGSH

La planification des stages d'une faculté de médecine

Contexte
Faculté de Médecine et de Pharmacie de Rabat
Rôle
Conception, développement, déploiement
Année
2025 → 2026

Chaque année, la faculté envoie des milliers d'étudiants en médecine et en pharmacie en stage hospitalier. Tout ça vivait dans un fichier MS Access. PGSH l'a remplacé : hôpitaux et services, groupes d'étudiants, plan de rotation annuel, présences et notes, le tout sur les serveurs de la faculté.

Ce que j'ai construit

  • Une API .NET 9 en clean architecture et CQRS (MediatR, FluentValidation, EF Core sur PostgreSQL). Chaque endpoint reste fermé tant qu'une permission ne l'ouvre pas.
  • Un moteur de planification qui refuse de mettre un groupe dans deux services en même temps, respecte la capacité de chaque service et suit le calendrier de chaque promotion.
  • Cinq VM sur ESXi. Caddy est la seule porte d'entrée, en HTTPS, et transmet le trafic aux conteneurs de l'API, à Keycloak et à PostgreSQL 17.
  • Une VM d'exploitation avec Prometheus, Grafana, Loki, Tempo et OpenTelemetry, k6 pour les tests de charge, et des sauvegardes chiffrées lancées par un timer systemd.
2,634 tests, xUnit et Testcontainers
5 VM derrière une adresse
6k+ étudiants
.NET 9React 19MantinePostgreSQL 17KeycloakDockerESXiCaddyOpenTelemetryGrafanak6
pgsh/deploy/topology.svg live
ESXI HOST · 5 VMS https://pgsh PGSH-PROXY-01 Caddy · TLS APP-NODE-01 .NET 9 API PGSH-IDP-01 Keycloak PGSH-DB-01 PostgreSQL 17 PGSH-OPS-01 OTel · Grafana · k6

Lexi

Une archive juridique hors ligne qui sait lire l'arabe

Contexte
Mon propre produit, lexiarchive.com
Rôle
Fondateur et ingénieur
Année
2026

Avocats, notaires et commissaires judiciaires au Maroc travaillent avec des piles de papier impossibles à fouiller. Lexi lit leurs documents en arabe et en français, les classe et répond aux questions à leur sujet. Tout tourne sur leur propre ordinateur : les dossiers des clients ne quittent jamais le cabinet.

Ce que j'ai construit

  • Une application desktop en Tauri v2 et React 19, avec un backend Python (FastAPI) embarqué et SQLite pour le stockage.
  • Les documents passent par un modèle local (Gemma sur Ollama). Les pages scannées sont d'abord découpées en bandes : c'est ce qui a enfin rendu lisibles les petits caractères arabes.
  • Le chat retrouve les dossiers grâce à un outil de recherche sur un index SQLite FTS5. J'avais prévu une base vectorielle, je l'ai abandonnée : l'index simple marchait mieux.
  • Les licences tournent sur un serveur Keygen auto-hébergé, derrière ma propre admin FastAPI (310 tests), accessible via un Cloudflare Tunnel. Le site est en Astro, en arabe et en français.
100% hors ligne
AR + FR documents et interface
~30 s par document numérique
Tauri v2React 19TypeScriptFastAPISQLite FTS5OllamaGemmaPyMuPDFKeygenCloudflareAstro
Voir le site lexiarchive.com
lexi/pipeline/ingest.svg live
ON-DEVICE · NO CLOUD scan.pdf 3 bands LLM gemma · ollama محضر text SQLITE · FTS5 trigram index TOOL CALL search_cases() OFFLINE

Idara إدارة

Un système RH complet pour un établissement public

Contexte
Faculté de Médecine et de Pharmacie de Rabat
Rôle
Conception, développement, déploiement
Année
2026

Dans l'administration publique marocaine, les RH tournent encore au papier, à Excel et à la mémoire des gens. Idara rassemble tout pour la faculté : dossiers des enseignants et du personnel administratif, affectations, carrières et grades, congés et absences, quotas, discipline, notation annuelle, et les documents officiels que les RH signent tous les jours.

Ce que j'ai construit

  • Un monorepo TypeScript : Express et Prisma sur PostgreSQL 17 pour l'API, React et TanStack Query pour le front, et des schémas Zod partagés des deux côtés.
  • Des accès par politiques avec un périmètre par unité : un chef de service ne voit que ses agents. Chaque modification RH part dans un journal d'audit.
  • Attestations de travail et ordres de mission générés en PDF avec Puppeteer, en français et en arabe. Le signataire est lu dans l'organigramme au moment de la génération, jamais codé en dur.
  • Notifications dans l'application, une tâche mensuelle qui signale les avancements possibles et les départs à la retraite, import Excel du personnel existant, rapports, et une stack Docker Compose avec sauvegardes pg_dump quotidiennes.
400+ tests
10+ modules RH
3 langues : FR, AR, EN
TypeScriptReactExpressPrismaPostgreSQL 17ZodPuppeteeri18nextDockernginxVitest
idara/modules/orbit.svg live
staff assignments careers leave absences quotas discipline evaluations EMPLOYEE RECORD PDF FR · AR

Balagh بلاغ

Les réclamations étudiantes, enfin bien gérées

Contexte
Faculté de Médecine et de Pharmacie de Rabat
Rôle
Full-stack et sécurité
Année
2026

Les étudiants déposent une réclamation via un formulaire guidé et suivent la réponse dans un fil en direct. L'administration trie, répond et exporte. Ça marche en français et en arabe, de droite à gauche compris, et l'hébergement ne coûte rien.

Ce que j'ai construit

  • Next.js 14 en TypeScript strict. Chaque entrée passe par Zod et chaque écriture est limitée en débit.
  • Supabase avec la sécurité au niveau des lignes sur chaque table : même un bug dans l'application ne peut pas lire les données d'un autre.
  • Un constructeur de formulaires pour les admins, des permissions qu'ils peuvent modifier eux-mêmes, et un journal de chaque action admin.
  • Des fournisseurs d'e-mail interchangeables, des webhooks sortants et un branchement pour un agent IA sur Telegram.
€0 d'hébergement par mois
RLS sur chaque table
FR + AR RTL compris
Next.js 14TypeScriptSupabasePostgreSQLRealtimeTailwindnext-intlZodVercel
balagh/request/lifecycle.svg live
student admin NEXT.JS 14 · APP ROUTER middleware · session zod · validate rate limit audit log SUPABASE RLS postgres · auth · storage email webhooks telegram · ai REALTIME
Ma méthode

Je travaille avec Claude. Les décisions restent les miennes.

Claude Code me rend beaucoup plus rapide. Mais aller vite sans règles, c'est juste livrer des bugs plus vite. Alors chaque projet suit les mêmes quelques habitudes.

  1. 01

    L'écrire d'abord

    Le schéma, les contrats d'API et les raisons derrière chaque décision entrent dans le dépôt avant le code. Quand le code change, la doc change avec.

  2. 02

    On ne passe pas au rouge

    Une phase n'est pas finie tant que le typage, le lint et les tests ne passent pas. Je ne commence pas la suivante avec un échec connu.

  3. 03

    Tester sur le vrai

    Tests de fumée sur les vraies données, tests de charge sur les vrais serveurs. Quand quelque chose casse, je note pourquoi, pour que ça ne casse pas deux fois de la même façon.

  4. 04

    L'IA rédige, je signe

    L'architecture, les frontières de sécurité et tout ce qui touche aux données des gens : c'est moi qui décide, et je relis chaque ligne.

~/repos/pgsh — zsh

Une session type sur PGSH, raccourcie.

Recherche

Ma thèse, en sécurité mobile

Doctorant · 2024 → 2028

"Security approaches for embedded mobile systems"

Université Mohammed V, Rabat · équipe IPSS (Intelligent Processing and Security of Systems) · sous la direction du Pr Ahmed El-Yahyaoui

Un téléphone vérifie qui vous êtes une seule fois, au déverrouillage. Ensuite, il fait confiance à n'importe qui. Ma contribution principale, CLCA, vous reconnaît à votre façon de taper et suit l'évolution de vos habitudes, sans oublier ce qu'il a appris et sans garder vos données brutes.

Ce que les expériences ont montré

  1. 01

    La façon de taper dérive avec le temps, et beaucoup quand on change d'appareil. Je l'ai mesuré sur des données réelles ; la littérature ne l'avait pas établi.

  2. 02

    Mettre le modèle à jour session après session réduit les erreurs de vérification face à la dérive, sans oubli catastrophique.

  3. 03

    Le mécanisme qui limite les mises à jour résiste aussi à l'empoisonnement progressif. C'est vrai sur deux groupes d'utilisateurs indépendants.

  4. 04

    Après un changement brusque de clavier, le modèle adaptatif se rétablit en une session. Un modèle figé, jamais.

CNN-BiLSTM · Variational Continual Learning · Deep Generative Replay · CMU, Tappy and Buffalo datasets

La suite : une détection adaptative qui tourne directement sur des microcontrôleurs ARM Cortex-M, avec la mémoire et l'énergie comme contraintes fortes.

KEYSTROKE DYNAMICS · CLCA ON-DEVICE r a b a t ␣ 2 0 2 6 ENROLLED TODAY still you drift absorbed · no raw data kept

Publications

  • En préparation Article de revue

    CLCA: A Continual Learning Framework for Drift-Aware Continuous Authentication Using Keystroke Dynamics

    E. Elasraoui, A. El-Yahyaoui · IEEE Transactions on Biometrics, Behavior, and Identity Science (Q1)

  • 2025 Conférence internationale, retenue comme chapitre d'ouvrage

    Securing Mobile Short-Range Wireless Systems: A Comparative Survey of NFC and BLE Security Mechanisms, Vulnerabilities, and Mitigation Strategies

    E. Elasraoui, A. El-Yahyaoui · OCMT 2025, Oman College, Oman

  • 2025 Conférence nationale

    LSTM-Based GPS Spoofing Detection for Mobile Security

    E. Elasraoui, A. El-Yahyaoui · ICAIM'25, ENSA Fès, Morocco

Compétences

Trois métiers, une personne

Logiciel

Des backends avec de vraies règles métier, et des écrans qu'on utilise sans formation.

  • C# and .NET 9, ASP.NET Core, EF Core
  • TypeScript, React 19, Next.js, Astro
  • Python and FastAPI
  • Tauri desktop apps
  • Kotlin for Android, Java
  • PostgreSQL, SQL Server, SQLite, MongoDB

DevOps

Sur vos serveurs ou dans le cloud. Surveillé, sauvegardé et documenté.

  • VMware ESXi virtualization
  • Docker, Compose, reverse proxies, TLS
  • Keycloak, OIDC and SSO
  • Prometheus, Grafana, Loki, Tempo, OTel
  • AWS (EC2, S3, RDS, IAM, CDK), OpenStack
  • Cloudflare, Netlify, Vercel, CI/CD

IA et sécurité

Des modèles qui tournent en privé, et le bagage de recherche pour savoir où ils cassent.

  • Claude Code workflows for teams
  • Local LLMs with Ollama and Gemma
  • Reading scanned Arabic documents
  • Continual learning, behavioural biometrics
  • Mobile security: BLE, NFC, GPS spoofing
  • LSTM, CNN, GANs, Spark MLlib
Services

Comment travailler ensemble

01

Construire un produit

Un MVP, un outil interne, ou cette vieille base Access que personne n'ose toucher. Je l'emmène du schéma à une application en production.

Web appsAPIsDesktopMigrations
02

Monter votre infrastructure

Machines virtuelles ou cloud, SSO, supervision et sauvegardes, avec des procédures que votre équipe peut suivre sans m'appeler.

ESXiDockerMonitoringBackups
03

Ajouter de l'IA à l'existant

Des fonctions LLM privées, la lecture de documents en arabe et en français, ou une mise en place de Claude Code pour vos développeurs.

Local LLMsOCRAgentsClaude Code
Format
Temps partiel, 2 à 3 jours par semaine, ou missions au forfait
Où
À distance, ou sur site à Rabat et Casablanca
Fuseau
GMT+1, les mêmes heures que l'Europe
Langues
Arabe, français, anglais, un peu d'allemand (B1)
Parcours

Comment j'en suis arrivé là

Certifications

  • AWS Academy Cloud Foundations
  • AWS Academy Cloud Security Foundations
  • IBM Big Data 101 and Hadoop 101
  • IBM MapReduce and YARN, Apache Pig 101
  • WIPO Academy DL-101: Intellectual Property
  1. 2024 → 2028

    Doctorant en sciences et technologies

    Université Mohammed V, Rabat · équipe IPSS

    Thèse sur la sécurité des systèmes mobiles embarqués, sous la direction du Pr Ahmed El-Yahyaoui. Deux communications en conférence, un article de revue en préparation, soutenance prévue en 2028.

  2. 2025 → now

    Ingénieur logiciel et DevOps

    Faculté de Médecine et de Pharmacie de Rabat, et indépendant

    Conception et déploiement de PGSH, Idara et Balagh pour la faculté. Lancement de Lexi, mon propre produit.

  3. 2023

    Développeur Android

    LoginID, Canada (à distance)

    Travail sur un portefeuille d'identité Android qui utilise le chiffrement totalement homomorphe. Kotlin, clean architecture, Dagger Hilt.

  4. 2021 → 2023

    Master en Traitement Intelligent des Systèmes

    Université Mohammed V, Rabat

    Big data avec Hadoop et Spark MLlib, clouds privés sur OpenStack et OpenShift, et une voiture autonome entraînée par Q-learning.

  5. 2021

    Développeur React et data analyst

    Lifemakers Academy, Oujda

    Une application de gestion de projets qui prédit la durée d'une tâche avec des modèles de régression.

  6. 2020

    Développeur full-stack

    Cefolim, Oujda

    Une plateforme d'actualités éducatives avec une API REST et des salons de discussion en direct via WebSockets.

  7. 2018 → 2021

    Licence professionnelle en informatique décisionnelle

    Université Mohammed I, EST Oujda

    Dont un stage en 2019 où j'ai construit une application C# et SQL Server pour la direction régionale de l'éducation.

Contact

Un projet à construire, ou à réparer ?

Dites-moi sur quoi vous travaillez. Je réponds dans la journée, souvent avec quelques questions.

Tapez pour filtrer · Entrée pour y aller · Échap pour fermer