Backend engineer building distributed, event-driven platforms and polyglot systems — from encrypted data vaults to real-time market intelligence pipelines, self-hosted on Kubernetes.
Frontend
Backend
DevOps & Infra
Data & Messaging
VaultedMind — Coffre-fort santé mentale, zero-trust
Application full-stack pour journaliser humeur et réflexions personnelles sans jamais exposer la donnée brute, même en interne.
- Chiffrement au repos : chaque champ sensible est chiffré en AES-256-GCM avant persistance ; les emails sont protégés par blind indexing pour permettre une recherche sans exposer le PII.
- Isolation réseau stricte : NetworkPolicies Kubernetes garantissant que seul le frontend parle au backend, et seul le backend parle à la base de données.
- Module IA d'insights (
ai-insights) en architecture hexagonale (domain/application/infrastructure) : undata-sanitizer.serviceanonymise les journaux avant tout appel LLM, unprompt.serviceconstruit les prompts, et un cron génère périodiquement des insights personnalisés. - CI/CD & sécurité : pipelines GitHub Actions avec scan de secrets, déploiement GitOps via ArgoCD/Kustomize.
SentiGraph Finance — Market intelligence crypto temps réel
Architecture microservices polyglotte pensée pour la faible latence, composée de quatre services indépendants reliés par un backbone Redis (DragonflyDB) :
- Harvester (Rust) : ingestion haute fréquence des flux WebSocket Binance Futures (ticker, profondeur de marché, liquidations), avec reconnexion automatique à backoff exponentiel.
- Analyst (Go) : pool de workers pour l'analyse de sentiment via Ollama, persistance batch dans TimescaleDB, diffusion temps réel par WebSocket.
- Scout (Go) : veille RSS multi-sources et Nitter, redirigée vers l'Analyst pour scoring de sentiment.
- Dashboard (Next.js) : terminal de monitoring avec
lightweight-charts, mise à jour sub-seconde pilotée par WebSocket.
NightQuizz — Plateforme de quiz live, microservices DDD
Monorepo Yarn (Fastify + Domain-Driven Design) découpé en cinq services : api-gateway, ms-user, ms-quiz-management, ms-session, ms-response, plus un ws-service dédié au temps réel.
- Auth zero-trust en cascade : le gateway vérifie le JWT externe puis mint un token interne signé (RSA) par requête ; chaque microservice le revalide via des hooks Fastify (
hookAccessToken/hookInternalToken) sans jamais faire confiance à un appel direct. - Kafka avec idempotence garantie : chaque événement (
USER_CREATED, etc.) porte uneventIdUUID ; les consommateurs le confrontent à une tableprocessed_eventsdans la même transaction TypeORM, assurant un traitement exactly-once malgré la sémantique at-least-once de Kafka. - Valkey comme cache/broker (fork open-source de Redis) partagé entre les services, déployé via des manifests Kubernetes dédiés (
k8s/services/cache). - Observabilité complète : OpenTelemetry pour le traçage distribué, Jaeger pour la visualisation des traces, OpenSearch + Dashboards pour la centralisation des logs, et des dashboards Grafana/Prometheus custom.
- Déploiement : Docker Compose multi-profils (
infra/app) en local, manifests K8s + overlays ArgoCD pour la prod.
Volontariapp — Écosystème bénévolat, event-driven à l'échelle
Méta-repo ("umbrella") orchestrant une douzaine de dépôts indépendants (microservices, workers, app mobile, packages partagés), documentés selon le modèle C4 (contexte, containers, flux async, déploiement).
- Transactional Outbox Pattern : chaque microservice insère sa donnée métier et un job "pending" dans la même transaction ACID Postgres, éliminant le "dual write problem" entre la base et le bus d'événements.
- Pipeline job → audit → stream : un
outbox-runnerpousse les jobs vers BullMQ (Redis) ; unworkerles exécute et journalise le résultat, ce qui déclenche un trigger SQL automatique republiant l'événement vers un Redis Stream, consommé à son tour par despost-processors. - Scatter-Gather orchestré par WebSocket : à la création d'un événement, plusieurs post-processors indépendants (géocodage, écriture dans le graphe Neo4j
ms-social) travaillent en parallèle ; lews-serviceagrège leurs accusés de réception parcorrelation_idet ne notifie le client qu'une fois toutes les étapes confirmées — avec Saga compensatoire (rollback Neo4j) en cas d'échec partiel. - gRPC synchrone + Redis asynchrone : l'API Gateway route les requêtes rapides en gRPC vers les microservices isolés (chacun avec sa propre base Postgres), tandis que tout traitement lourd est délégué à la tuyauterie événementielle.
- Sécurité GitOps : cluster K3s en Pod Security Admissions "Restricted" (non-root, read-only filesystem, seccomp), secrets chiffrés via Bitnami Sealed Secrets, Network Policies en default-deny entre domaines.
- Mobile : application React Native (Expo 54) consommant ce même écosystème via l'API Gateway.




