Aller au contenu principal
Disponible immédiatement — Lyon, sur site, hybride ou à distance

Développeur front-end senior, React & TypeScript.

  • 18 ansde développement web
  • 5 ansReact / TypeScript

J'architecture et je maintiens des applications React en production : temps réel, hors ligne, interfaces métier. Seul référent front de mon agence ces dernières années, avec un solide bagage back-end Laravel qui facilite le dialogue avec les équipes API.

Me contacter

Stack — au quotidien

  • TypeScript
  • React
  • Next.js
  • TanStack Query
  • Zustand
  • Tailwind CSS

Front & tests

  • Inertia.js
  • Vite
  • React Hook Form
  • Cypress
  • Playwright

UI & design

  • SCSS
  • MUI
  • Ant Design
  • Radix UI
  • Figma

Back-end & outillage

  • Laravel
  • API REST
  • Mercure
  • MySQL
  • PostgreSQL
  • Docker
  • GitHub Actions

Certifié Laravel — 2021

Cas d'étude

Deux projets, deux contraintes fortes : le temps réel et le hors ligne.

Ninkasi

2022 — 2026

Plateforme d'animation pour un réseau de restaurants : blind test en direct, carte des produits, agenda des événements.

Mon rôle
Les deux applications front React et leur intégration Inertia.
Équipe
Backoffice Nova et back-end Laravel assurés par le reste de l'équipe.
  • React
  • TypeScript
  • MUI
  • Inertia.js
  • Mercure
Console game masterReact · MUILaravel · Novaback-office, APIHub Mercurediffusion SSEApp de salle (joueurs)React · accès QR codeactions(Inertia)publieSSESSE
mon périmètrehors périmètreinfrastructure

Interface game master

Enjeu : un employé de restaurant, non technique, doit animer une partie en direct sans formation.

Console de pilotage connectée au back-office Laravel via Inertia : lancement des manches, contrôle du rythme.

Déployée dans le réseau Ninkasi, plus de 20 établissements

Temps réel multi-acteurs

Enjeu : garder l'animateur et toutes les équipes synchronisés en direct, sur le réseau d'un restaurant.

Diffusion des événements via Mercure (SSE), un protocole conçu pour monter en charge. Accès par QR code seulement, géolocalisé par restaurant et volontairement non référencé.

Une vingtaine d'équipes et plus par partie, plusieurs joueurs par équipe

Carte produits — écran & PDF

Enjeu : chaque restaurant a sa propre carte, avec ses contraintes et ses choix, gérée par Ninkasi sous Excel et servie par une API maison.

Rendu de la carte depuis l'API, par restaurant et par format : version digitale et PDF imprimable, avec des données et une mise en page propres à chaque support, fidèles à la charte.

Plus de ressaisie manuelle des cartes, en digital comme en print

Medikiosk

2024 — 2026

Borne interactive déployée en pharmacie, qui doit rester pleinement opérationnelle sans connexion réseau.

Mon rôle
Seul responsable du développement, de la maintenance et des évolutions de la v2.
  • React
  • TypeScript
  • Next.js
  • DexieDB
  • Service Worker
Interface borneNext.js · ReactService workercache & mises à jourDexieDB (IndexedDB)source de vérité localeAPIserveur distantAdmin pharmaciedéclenche la synchrolecture / écrituresynchro descendantesert
mon périmètrehors périmètre

Synchronisation repensée

Enjeu : fonctionner aussi bien hors ligne qu'en ligne. En v1, la synchronisation dans les deux sens, montante et descendante, s'était révélée peu fiable.

En v2, mêmes déclencheurs (connexion de la borne, ou manuellement depuis l'administration de la pharmacie), mais une synchronisation descendante uniquement : la borne récupère ses données, puis les sert en local depuis DexieDB (IndexedDB).

Une fois synchronisée, la borne fonctionne en totale autonomie

Refonte du service worker

Enjeu : des bornes réparties en pharmacie, qui doivent rester à jour sans intervention sur place.

Réécriture complète de la stratégie de cache et du cycle de mise à jour.

Mises à jour appliquées automatiquement, sans intervention

Projets personnels

Du code à ouvrir : démo en ligne, dépôt public.

Les projets d'agence restent confidentiels. Ceux-ci sont publics de bout en bout : l'application se teste dans le navigateur, le code et chaque décision se lisent sur GitHub.

Gestionnaire de personnage D&D

Depuis septembre 2026

Fiches de personnage Donjons & Dragons 5e portées en application : un moteur de règles métier qui calcule la fiche au lieu de la stocker, utilisable hors ligne à la table de jeu.

  • Next.js 16
  • React 19
  • TypeScript strict
  • Zustand
  • Zod
  • Vitest
  • PWA
Liste de quatre personnages de niveau 3 (clerc, barbare, moine et druide), chacun avec sa classe d'armure, ses points de vie et un bouton Jouer.
ADR
73
pull requests fusionnées
87

Moteur de règles

Classe d'armure, attaques, sauvegardes, points de vie, emplacements de sorts : tout ce qui se déduit des règles est calculé par des fonctions pures, jamais saisi.

Données versionnées

Stockage local derrière un repository pattern, avec des migrations de format qui font évoluer les données des joueurs sans rien perdre.

Décisions tracées

Chaque choix structurant fait l'objet d'un ADR ; chaque évolution passe par une pull request et une CI verte.

Parcours

  • WEB-ID — Lyon

    Développeur React / Laravel

    2018 — 2026

    Pivot vers React en octobre 2021 au sein d'une équipe front de trois développeurs (un lead, un junior, moi). Après deux départs, seul référent technique sur la partie front jusqu'à la fermeture de l'agence.

  • BrandBirds — Lyon

    Senior Web Application Developer

    2017 — 2018

    Back-office Laravel et API REST alimentant les applications mobiles BrandBirds et BrandBirdsBiz.

  • CPAM Meurthe-et-Moselle

    Développeur web

    2008 — 2016

    Conception et déploiement d'outils métiers pour les agents. Stage de fin d'études transformé en CDI, huit ans sur le poste.

Recommandations

J'ai eu le plaisir de travailler avec Bruno chez WEB-ID et j'ai rapidement apprécié son sérieux et sa fiabilité. Bruno est quelqu'un de discret, consciencieux et surtout sur qui on peut compter. Il est réactif, toujours disponible pour aider ses collègues et cherche systématiquement à trouver des solutions plutôt qu'à chercher des excuses. C'est également quelqu'un qui entretient de très bonnes relations avec les clients, qui apprécient particulièrement son professionnalisme et son écoute. Bref, un vrai « mec bien » avec qui il est agréable de travailler, et que je n'hésiterais pas à recommander à une équipe qui cherche quelqu'un de fiable, impliqué et humain.

Philippe Pelissier
CEO — WEB-ID

J'ai eu le plaisir de travailler avec Bruno et je le recommande sans hésitation. Sérieux, à l'écoute et toujours disponible pour aider, il apporte une véritable valeur à toute équipe. Nos sessions de pair programming ont été particulièrement agréables et efficaces : nous avancions ensemble avec fluidité et sans difficulté. Un collaborateur de confiance, que je recommande vivement.

Léo Tiollier
Software Engineer — WEB-ID

Bruno est un super dev fullstack Laravel / React, polyvalent, couteau suisse, il répond vite et bien à tous les problèmes avec sérieux. Hyper efficace (et super sympa).

Gabriel Pillet
Dev Fullstack — Qualité & Accessibilité Numérique — WEB-ID

J'ai travaillé avec Bruno chez WEB-ID, sur des sujets front alors que je suis plutôt back. Il a su m'accompagner avec pédagogie jusqu'à ce que je sois autonome sur un projet, sans jamais se contenter de le faire à ma place. Compétent, disponible et clair dans ses explications, je recommande Bruno à toute équipe recherchant quelqu'un de fiable et impliqué.

Elise Liegeois
Développeuse PHP — WEB-ID

J'ai eu le grand plaisir de collaborer avec Bruno sur plusieurs projets, y compris en tant que manager. Développeur Front/React investi et consciencieux, il a mené à bien des projets de toutes envergures, au sein d'équipes de tailles variées, avec une véritable autonomie. Le tout dans un état d'esprit constamment constructif et positif. Je le recommande sans la moindre hésitation !

Ludovic Jourdain
Product Manager & Product Designer — WEB-ID

Ce site

Ce site est aussi un cas d'étude.

Conçu et maintenu comme un projet client : décisions documentées, qualité vérifiée avant chaque mise en production, code public. Tout ce qui suit est vérifiable dans le dépôt.

  • Next.js 16
  • React 19
  • TypeScript 6
  • Tailwind CSS v4
  • Vercel
  1. Contenu

    Une seule source, deux rendus.

    Tous les textes vivent dans content/profile.ts. La page web et le CV imprimable A4 sont deux arbres React alimentés par les mêmes données ; l'impression bascule par media query, sans JavaScript.

  2. Rendu

    Statique par défaut.

    Toutes les pages publiques sont pré-rendues au build. Seules les routes d'administration du blog sont dynamiques.

  3. Blog

    Sans base de données ni CMS.

    Les articles sont des fichiers Markdown versionnés dans le dépôt. L'admin, protégée par connexion LinkedIn, les publie en committant via l'API GitHub.

  4. Qualité

    Rien ne part en production sans CI verte.

    Typecheck, lint strict et build tournent à chaque push ; le résultat bloque la promotion en production sur Vercel. Prettier et ESLint s'exécutent aussi avant chaque commit.

  5. Décisions

    17 décisions d'architecture documentées.

    Chaque choix structurant fait l'objet d'un ADR (contexte, décision, conséquences), publié en ligne, y compris quand une décision en remplace une autre.

  6. Méthode

    Une issue, une branche, une PR.

    Chaque évolution part d'une issue suivie sur un tableau de projet, et passe par une pull request, CI comprise, avant d'arriver sur main.

Un poste front-end React à pourvoir ? Parlons-en.