Thomas Carvalho logo

Thomas Carvalho

Développeur full-stack senior | Java/Spring, Clojure, TypeScript, 15+ ans d'expérience

Thomas Carvalho
Développeur Full-Stack Senior · Java · Node · TypeScript · Clojure

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
Depuis 2024
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
nov. 2021 – juin 2023 · Remote
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
nov. 2020 – nov. 2021 · Remote
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
juin 2017 – mars 2019 · Remote / Marseille
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
janv. 2016 – mars 2017 · Paris
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
janv. 2010 – janv. 2016 · Paris
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
Réserver un appel