Je construis des systèmes de production de bout en bout : un monorepo ERP de 300 tables, des outils de sécurité auto-hébergés, des vitrines WebGL et des serveurs MCP qui pilotent les applications Adobe.
Projets sélectionnés

Un registre de maquettes d'interface générées par IA, stockées sous forme de fichiers et servies comme registre shadcn : n'importe laquelle s'installe dans un autre projet en une commande. Chaque maquette conserve le brief qui l'a produite, et l'ensemble s'exporte en HTML autonome.

Le système le plus complexe que j'aie construit. Un monorepo ERP Turborepo (application interne, portail client, mobile, documentation) sur un schéma PostgreSQL/Drizzle de plus de 300 tables, avec tRPC de bout en bout, validation typée drizzle-zod, authentification, i18n et couverture E2E Playwright.

Marque, boutique et outillage catalogue pour un porte-passeport en shweshwe fabriqué à Soweto. Un thème Shopify en production, un pipeline catalogue scripté en Python, et un site de proposition déployable qui a servi à trancher la direction artistique avant de construire quoi que ce soit.

Moniteur de surface d'attaque auto-hébergé. Découverte continue des actifs et analyse de vulnérabilités avec nuclei derrière un tableau de bord, comme alternative à ProjectDiscovery Cloud où les données restent chez vous.

Une lecture locale de vos propres exports de communication : à qui vous accordez réellement du temps, quels fils s'éteignent, et quels motifs un modèle croit avoir trouvés. Chaque constat porte un taux d'erreur mesuré et un verdict humain qui prime sur le modèle dans les deux sens.

Mémoire de réunion locale pour macOS. Enregistre le son système et le micro, sépare les locuteurs par diarisation pyannote et transcrit en local : rien ne quitte la machine. Livré avec une application iOS compagnon.

Poste de commande en terminal pour tous les dépôts de la machine. État git, dérive des dépendances et vérifications par projet derrière une API JSON sans dépendances et une interface Ink qui ne demande aucune étape de build, avec un tableau de bord navigateur optionnel.

Des alertes de déploiement sur le téléphone dès qu'un build passe au vert ou au rouge. Un Worker Cloudflare vérifie la signature du webhook et diffuse les notifications, derrière une application Expo qui porte déploiements, journaux de build et projets.

Une lecture en barre de menus macOS des limites d'abonnement IA, des fenêtres de réinitialisation et des dépenses par fournisseur, chacune tirée de son endpoint officiel plutôt que scrapée : trois tableaux de bord se réduisent à un coup d'œil.

Analyse numismatique assistée par IA. Identification et notation de pièces à partir de photos, via des modèles de vision et des passes OCR forensiques, dans une application Expo multiplateforme.

Vitrine 3D pilotée au défilement où des pièces en métaux précieux fondent et se reforment les unes dans les autres, avec un HUD technique et une inspection au survol.
Une boucle sans raccord d'une simulation de sable de 6,7 millions de points, mise en tourbillon en fleur par un champ de vitesse pyro et rendue avec Karma. Étalonnée depuis des EXR linéaires pour que les hautes lumières s'atténuent au lieu de brûler.

Des serveurs MCP qui pilotent After Effects et Illustrator via ExtendScript, en générant et en rendant des compositions de bout en bout depuis un fichier de configuration ou un agent IA.
Ce sur quoi je travaille
Ingénierie produit
Des applications en monorepo avec une chaîne de types ininterrompue, du schéma jusqu'à l'interface.
Données et backend
Des schémas relationnels à grande échelle, validés à l'entrée de chaque appel.
Interface et animation
Des interfaces conçues directement en code, où la typographie, la couleur et le mouvement forment un seul système.
Automatisation et IA
Des agents et des serveurs MCP branchés sur de vrais outils plutôt que sur des démos.
Articles
Tous les articlesDes contraintes plutôt que des relecteurs
Un relecteur attrape une erreur une fois. Une contrainte l'attrape toujours, y compris venant de gens qui ne vous ont jamais rencontré. Quelle couche doit porter un invariant, et où l'approche cesse de fonctionner.
Rapporter ce qu'on n'a pas vérifié
Entre ceux qui font le travail et ceux qui le financent se tient quelqu'un qui doit produire de la confiance sans pouvoir rien vérifier. C'est là que l'incertitude est blanchie en fait.
Diriger ce qu'on ne sait pas lire
Un manager incapable d'évaluer le travail doit évaluer son apparence. Le micromanagement, les réorganisations et le schéma où l'ingénieur le plus solide reçoit le traitement le plus dur découlent tous de cette seule substitution.
Simuler plutôt qu'animer
Une animation est l'enregistrement d'une décision. Une simulation est la décision, toujours en train de tourner. Trois expériences navigateur qui ont pris la seconde voie, et ce que chacune a coûté.
Brancher un ERP sur la facturation électronique française
L'échéance de septembre 2026 n'est pas un problème de PDF. Les coutures qui survivent à un changement de prestataire, et les verrous qui empêchent un mauvais déploiement de transmettre.
J'ai construit un outil pour vérifier si je l'imaginais
Vingt et un mois de mes propres messages, deux détecteurs, et un échantillon annoté à la main pour les mesurer. L'outil a trouvé ce que j'attendais, puis mesurer l'outil m'en a repris une partie.
Post-mortem d'un projet construit seul
Dix-huit mois, onze applications, un seul auteur de commits, et ce que l'historique git a enregistré.
Hériter d'un projet presque terminé
Ce que « déjà bien avancé » voulait dire en réalité, mesuré dans les fichiers qu'on m'a remis.
Un journal fiscal en ajout seul pour NF525
Prouver à un auditeur que vos enregistrements n'ont jamais été altérés, et ce que cela impose à votre processus de publication.
Contact
Écrivez-moi à juniegrat@gmail.com