Thomas Carvalho
Développeur Full-Stack Senior · Java · Node · TypeScript · Clojure
Région parisienne·thomas@thomascarvalho.com·06 63 30 26 46·thomascarvalho.com·github.com/thomascarvalho·linkedin.com/in/carvalhothomas
Développeur full-stack freelance depuis 2024, 15+ ans d'expérience sur des plateformes à enjeux (industrie, santé, aviation, fintech Web3, SaaS B2B). Triple compétence backend en Node.js/TypeScript, Java/Spring Boot et Clojure ; frontend en TypeScript/React, Angular et ClojureScript. Je conçois et construis des produits depuis zéro : MVP livré en 40 jours en autonomie, data platform d'un acteur de l'aérien, deux SaaS conçus et développés en solo. Clojure en production dans 3 contextes industriels, plusieurs missions Node.js/NestJS sur des produits SaaS et fintech. Rôles de lead technique et référent front assurés à plusieurs reprises.
Compétences
- Backend
- Java, Spring Boot, Clojure, Node.js, NestJS, Express, Deno
- Frontend
- TypeScript, React, Angular, ClojureScript, Redux, Vite, TanStack Query, Storybook, SASS, Gatsby, Astro, Next.js
- Données & messaging
- PostgreSQL, Oracle, MongoDB, DynamoDB, Kafka, Avro
- Infra & ops
- Docker, Kubernetes, GitLab CI, AWS, GCP, OpenTelemetry
- Méthodes
- Scrum (certifié ScrumMaster), TDD, tests unitaires, code review, mentoring
Expérience
Freelance - Développeur Full-Stack Senior
Mozza × Cryopalmars 2026 – août 2026
SaaS multi-tenant de gestion de stockage cryogénique pour biobanques (cuves azote liquide, congélateurs -80 °C), déployé en production sur GCP.
- Conception et construction du MVP depuis zéro en 40 jours, en autonomie complète sur la technique (équipe : 1 PO, 1 UX designer) : backend NestJS/TypeScript, ~25 modules en architecture hexagonale stricte, domaine sans dépendance framework
- Domaine de 30 entités et traçabilité réglementaire type 21 CFR Part 11 : journal d'audit immuable chaîné par hash
- Form builder de types d'échantillons, table d'échantillons à l'échelle, import massif CSV/XLS/XLSX
- Design system interne (~40 composants React sous Storybook) et CI/CD GitHub Actions vers Cloud Run / Cloud SQL
Stack · TypeScript, NestJS, Prisma, PostgreSQL, Zod, React, Vite, TanStack Router/Query, Storybook, Docker, GCP (Cloud Run, Cloud SQL, GCS)
Michelin - MBOMjuin 2024 – mars 2026
MBOM (Manufacturing Bill Of Materials) : plateforme de gestion des nomenclatures de fabrication pour l'industrie pneumatique, déployée à l'échelle des usines du groupe.
- Backend Java/Spring Boot & Clojure et frontend Angular/TypeScript, au sein d'une équipe Scrum (1 Scrum Master, 2 référents métier, 4 développeurs), dans un dispositif d'une quarantaine de personnes réparties en plusieurs équipes Scrum
- Publication et consommation d'événements sérialisés en Avro contre un registre de schémas, producteur idempotent en acks=all
- Cas d'usage en architecture hexagonale (ports dans le domaine, adapters de persistance et d'API) et API REST exposée au front via DTO et mappers dédiés
- Chaîne GitLab CI d'une vingtaine d'étapes (build, tests, analyse statique, scans de sécurité, promotion multi-environnements) et déploiements Kubernetes
- Développement en TDD et tests d'intégration de bout en bout des consommateurs d'événements, sur broker et base réels
- Choix d'architecture, revues de code et documentation technique
Stack · Java, Spring Boot, Clojure, Angular, TypeScript, PostgreSQL, Kafka, Avro, Kubernetes, GitLab CI, OpenTelemetry
Institut Fidjijuin 2025 – mars 2026 · temps partiel
Plateforme de discussion et d'arbitrage collaboratif sur des référentiels métier, alimentés par import depuis Airtable.
- API REST Clojure authentifiée par JWT, avec droits d'accès par rôle et par référentiel
- Import depuis une API tierce paginée, déclenché depuis l'espace d'administration
- Reconstruction d'un référentiel hiérarchique à quatre niveaux à partir de tables liées à plat
- Fils de discussion rattachés aux éléments par identifiant externe, avec cycle de vie et journal d'activité
Stack · Clojure, PostgreSQL, React, TypeScript, Docker, Fly.io
Mission courte en parallèle
- Client privé (début 2024) - Site vitrine multilingue (FR/EN) en Astro pour un cabinet de conseil industriel.
Multis - Full-Stack Developer
Entreprise rachetée par Safe (ex-Gnosis Safe) en 2024
Banque en ligne Web3 pour entreprises et DAOs : suivi multi-chaînes d'actifs crypto, wallets multi-signatures, on/off-ramps vers comptes bancaires traditionnels.
- Développement full-stack - front ClojureScript, back Node.js/TypeScript/NestJS - au sein d'une équipe de 6 développeurs (1 tech lead, 2 PO, 1 UX designer), en lien direct avec le CTO
- Suivi temps réel des actifs multi-chaînes via WebSocket, agrégation de données issues de plusieurs blockchains et providers externes
- Fonctionnalités de trésorerie crypto, reporting financier et intégrations DeFi sur plateforme multi-chaînes
- Choix techniques et produit, mises en production, revues de code
Stack · ClojureScript, React, Node.js, NestJS, TypeScript, WebSocket
Web2vi - Lead Dev Front
SaaS de gestion de devis, factures et suivi de chantiers pour artisans du bâtiment.
- Référent technique frontend sur l'ensemble du produit, au sein d'une équipe de 5 développeurs et 1 PO
- Développement React et Gatsby, intégration SASS, backend Node.js/Express
- Revues de code, mentoring des développeurs juniors, choix techniques et UX
Stack · React, Gatsby, SASS, Node.js, Express, TypeScript, Docker, PHP
Mars 2019 – nov. 2020 - Transition : liquidation judiciaire de Deolan, nouvel enfant et déménagement familial.
Deolan - Full-Stack Developer & Lead Dev Front
Retour chez Deolan après deux ans chez Xebia, avec un rôle élargi de référent technique frontend sur l'ensemble des projets.
- Lead technique frontend (React, Angular) sur tous les projets de l'entreprise
- Développement full-stack et architecture applicative
- Mentoring de l'équipe, TDD, revues de code, mises en production
Stack · Java, Clojure, Node.js, React, Angular, AWS, Docker, Oracle, MongoDB
Xebia - Full-Stack Developer
Pour Europ-Assistance : marketplace de mise en relation particuliers / artisans (recherche, planning, notation, paiement).
- Choix de la stack et construction de la plateforme, au sein d'une équipe de 7 personnes (2 développeurs full-stack, 2 développeurs mobile, 1 UX designer, 1 Scrum Master, 1 PO)
- Conception et développement de l'API Node.js servant à la fois le front web et les applications mobiles natives, avec des besoins de données distincts par client
- Développement full-stack : recherche de prestataires, planning, système de notation, paiement
- Pair programming, revues de code systématiques et tests automatisés
- Mise en place du déploiement continu
Stack · React, Node.js, Express, AWS, DynamoDB
Deolan - Full-Stack Developer
Startup de l'aérien B2B : data platform facilitant les échanges entre acteurs du transport aérien (compagnies, handlers, aéroports).
- Conception et construction de la data platform depuis zéro : choix de la pile technique, développement full-stack et architecture logicielle, au sein d'une équipe de 6 développeurs, 1 PO et 1 UX designer
- Plateforme d'échange multi-acteurs : une dizaine de compagnies aériennes et autant de tour-opérateurs connectés, avec des formats et contraintes propres à chacun
- Échanges de données temps réel entre acteurs du transport aérien (WebSocket, SSE)
- Pratique du TDD, mise en place du déploiement continu (Jenkins, Docker), onboarding des nouveaux devs
- ScrumMaster lors de la transformation agile de l'entreprise
Stack · Java, Clojure, Node.js, React, Angular, Talend ETL, MySQL, Oracle, MongoDB
Side projects & open source - github.com/thomascarvalho
Fabulia (fabulia.fr) - Application de génération d'histoires audio personnalisées pour enfants (IA), conçue et développée en solo.
- Backend Clojure en architecture hexagonale : 4 ports, 8 adapters IA/TTS/stockage interchangeables
- Pipeline asynchrone texte → modération → audio sur worker PostgreSQL, job mis en file dans la transaction de création (outbox)
- Reprise par checkpoints après incident, retries différenciés, dead-letter
- Progression streamée en SSE : bus interne, snapshot en base à la reconnexion, token éphémère
- Intégration LLM (Claude) et synthèse vocale ; front React 19/TypeScript, Vite, TanStack Query
- Déploiement sur VPS personnel via Dokploy (Docker), opéré en autonomie
Stack · Clojure, PostgreSQL, Claude, ElevenLabs, React, TypeScript, Docker, Dokploy
Roucoule (roucoule.dev) - SaaS d'envoi de newsletters par email à partir d'un flux RSS, conçu et développé en solo : produit, architecture, API, infra.
- Serveur sans credentials SMTP : l'envoi est délégué à un client open-source (MIT, publié sur JSR et npm) exécuté sur la machine de l'utilisateur
- Journal d'envoi crash-safe en JSONL, chaque résultat flushé avant le suivant : un envoi interrompu reprend sans réexpédier à personne
- Envoi par workers concurrents avec throttling à débit constant et pauses par lots, un échec unitaire n'interrompant jamais la campagne
- Remontée des résultats rejouée avec classification des erreurs retriables et détection du cas déjà acquitté
- API REST à contrat documenté : tokens stockés en SHA-256, rate limiting multi-échelle, cookies de session signés HMAC
- RGPD : consentement horodaté, suppression définitive par API, désinscription one-click et en-tête List-Unsubscribe
- 239 tests exécutés en CI GitHub Actions (format, lint, typecheck), publication du client signée par provenance OIDC
Stack · TypeScript, Deno, Hono, Deno KV, Zod, HTMX, Tailwind, Deno Deploy
gatsby-plugin-mixpanel - plugin Gatsby publié sur npm
flame_ldtk - package Dart/Flutter publié sur pub.dev (niveaux LDtk pour le moteur Flame)
Formation
Licence Professionnelle - Programmation en environnement réparti
IUT d'Orsay · 2008 – 2009
BTS Informatique de Gestion, option développeur
Lycée Paul-Louis Courier, Tours · 2006 – 2008
Langues
Français - natif
Anglais - B2
