À propos

Qui je suis

Je suis développeur chez JoyPix à Doha, seul sur leur plateforme d'applications. Avant ça j'ai cofondé un petit studio en Tunisie et fait du support d'exploitation dans une entreprise de VTC. En dehors du travail, je construis des outils open source en Rust et en Python. Cette page, c'est le reste : ce sur quoi je travaille, ce que le travail en solo change, et comment me joindre.

→ Ma façon de construire

En ce moment

Mis à jour le 4 septembre 2026

Une réponse permanente à « sur quoi tu travailles ? », tenue à jour à la main plutôt que déduite de l'activité de commits.

construction

JoyPix — la plateforme, au quotidien

Mon vrai travail. Trois apps web, une app mobile et l'infrastructure en dessous, en tant que seul développeur dessus. En ligne sur eduqate.qa.

NestJSPrismaReactDocker
publication

Ferry — vers la sortie

Le démon de transfert pair-à-pair devient public. Huit crates Rust, une CLI, une extension VS Code et une application de bureau, tous parlant à un seul démon local. Aucun serveur nulle part.

RustNoise XKTaurirelease
construction

OpenDerja_TN

Le corpus ouvert pour la derja tunisienne — construction de la surface contributeur par-dessus le back-end et le moteur de tâches.

Next.jsNestJSPostgreSQL
conception

Un travel tracker pour les gens qui veulent les données

Une alternative à Polarsteps construite autour de ce que Polarsteps ne fait pas : traces GPS éditables, reconstruction d'itinéraire avec accrochage à la route, vrais exports CSV/JSON, région-visitée comme statistique de première classe. J'apprends Kotlin de zéro pour ça.

KotlinJetpack ComposeRustPostGISMapbox
apprentissage

La couche sous l'application

LFCS et Cisco CCNA — administration Linux et fondamentaux réseau — avant de gérer mon propre serveur dédié. Plus la certification d'architecture logicielle iSAQB, pour affiner la façon dont je rédige le travail d'architecture que je fais déjà.

LFCSCCNAiSAQB CPSA-F

Sur le travail en solo

Porter un système de bout en bout tout seul, ce n'est pas la même chose qu'être un développeur dans une équipe. Personne n'attrape une mauvaise décision avant la livraison, et il n'y a pas de second modèle mental contre lequel recouper le sien. C'est pour ça que le monitoring d'erreurs, les contrôles de dérive de schéma en CI et les tests de non-régression pour les bugs déjà rencontrés ont cessé d'être optionnels. Ils font une partie du travail qu'un autre regard ferait rien qu'en remarquant les choses au passage.

Faits

Langues

Arabe · Langue maternelleFrançais · CourantAnglais · CourantAllemand · Conversationnel

Basé à

Doha, Qatar — originaire de Le Kef, Tunisia. 4 ans à construire.

Comment ce site est construit

Une de mes propres règles : génère le vocabulaire partagé, ne le retranscris jamais. Deux copies maintenues à la main de quoi que ce soit divergeront, silencieusement. Alors ce site est généré depuis le journal de dev plutôt que copié depuis lui.

Le pipeline

La source de vérité est un coffre Obsidian — un dossier par projet, chacun avec une chronologie, un relevé de décisions, une liste courante de problèmes, et un ensemble de notes de technique.

Une étape de build lit ce coffre et :

  • copie les notes de technique dans le site, en résolvant les wikilinks du coffre en vrais liens
  • découpe la liste de problèmes de chaque projet en une page par problème, en extrayant la date de chaque entrée
  • applique une passe de sanitisation au seul projet sous confidentialité client — pas de nom de produit, pas de secteur, pas de noms de fournisseurs — tout en gardant chaque détail technique

Un contrôle CI fait échouer le build si le contenu commité diverge un jour du coffre. Le site peut être déployé sans le coffre présent ; le contenu généré est autonome et commité.

La stack

  • Next.js App Router, généré statiquement — chaque page est du HTML au build, ce que veut le contenu chargé en journal
  • Système de design porté de mon portfolio précédent : un fond bleu marine sombre, un accent cyan, Space Grotesk pour le texte et JetBrains Mono pour tout ce qui est de la donnée
  • Markdown rendu avec remark ; le frontmatter parsé avec gray-matter
  • Pas de CMS, pas de base de données, aucun fetch de données côté client pour le contenu

Ce qui manque délibérément

Un CV PDF généré, et pas grand-chose d'autre. Le formulaire de contact est une seule fonction serverless qui m'écrit et accuse réception à l'expéditeur via Resend — pas de base de données. Chaque note, chaque problème et chaque chapitre du récit a sa contrepartie anglaise.