ETI · ~26 M€ de CA

Camping-Car Park

campingcarpark.com · 1er réseau européen d’aires d’étape pour camping-cars

Développeur Full-stack / Product Engineer · Équipe produit ~15Janv. 2025 → Oct. 2025Réf. : Gaël Paillard · Lead TechVisiter le site (nouvel onglet)

Recruté pour reconstruire de zéro le site web et l’app mobile de Camping-Car Park, 1er réseau européen d’aires d’étape (600+ aires dans 6 pays, accessibles 24/24), dans le cadre de la migration du legacy PHP / Sylius vers une architecture microservices Node.js sur GCP. Au sein d’une équipe produit d’une quinzaine de personnes (~10 devs, Lead, PO/PM, chef de projet), j’ai pris en charge la brique la plus critique, l’authentification et la réconciliation des comptes clients, puis l’ai intégrée full-stack sur le web et le mobile.

600+aires d’étape en Europe, accessibles 24/24
1 M+clients sur le réseau
~26 M€de chiffre d’affaires annuel
~15l’équipe produit que j’ai intégrée

Ce pour quoi j’ai été recruté

Reconstruire, brique par brique, le nouveau site web et l’app mobile de Camping-Car Park, en migrant le legacy PHP / Sylius (endpoints lents, code noyé sous les couches d’abstraction) vers une nouvelle architecture microservices Node.js (nom de code « octopus ») sur GCP : GKE Autopilot, région europe-west9.

  • Authentification & gestion de compte, home, recherche multi-critères, page produit (iso web / app).
  • Brique transactionnelle : wallet avec auto-recharge, carte cadeau, cartes bancaires (Payline), abonnement, chèques-vacances.
  • CMS éditorial, pages statiques, et bundles d’aires / itinéraires conçus pour être référençables sur Google.

Ma pièce maîtresse : authentification & réconciliation

La brique la plus critique du chantier, construite from scratch en Fastify (Node.js). Avant la refonte, la carte d’accès des bornes était le seul moyen fiable d’authentifier un client : il fallait basculer vers un vrai modèle d’identité, sans perdre une seule fiche d’une base client en production.

  • Auth par OTP (SMS / email), modèle « 1 client = jusqu’à 2 téléphones vérifiés + 1 email », complétion différée et contextuelle (à la réservation, ou en live check-in déclenché par push après l’arrivée sur site).
  • Réconciliation des comptes existants via un arbre de décision : croisement téléphone / email / carte d’accès / nom pour rattacher au bon customer_id, ou en créer un nouveau.
  • Migration de données live : écriture conjointe sur la nouvelle table client et la table legacy sylius_customer, sans aucune rupture pour les utilisateurs en production.

Full-stack, web ET mobile

Une fois le back et la base prêts, j’ai intégré tout le flux d’authentification côté front, sur le site Next.js comme sur l’app React Native, avec la parité de comportement exigée par les specs, puis poursuivi sur d’autres modules de la refonte.

  • Écrans et routes : login, register, mot de passe oublié, réconciliation (quand un email / téléphone appartient déjà à quelqu’un).
  • Branchement complet back ↔ base ↔ front, sur les deux surfaces.
  • Deep links et universal links : push de live check-in, QR codes, redirections vers l’app.

Transactionnel & paiements

J’ai également travaillé la brique transactionnelle, inexistante dans le legacy, donc construite from scratch :

  • Wallet client (solde chargé sur la carte d’accès) avec auto-recharge conditionnelle quand le solde devient insuffisant.
  • Intégration Payline : enregistrement de plusieurs cartes bancaires, moyen de paiement par défaut, rechargement par CB / chèques-vacances.
  • Carte cadeau achetable, avec son flux de paiement complet.

Un contexte à très fortes contraintes

Une mission où la rigueur n’était pas optionnelle : un réseau à fort chiffre d’affaires et plusieurs millions d’utilisateurs, une base client en production à ne jamais corrompre, une exigence de zéro défaut sur les flux critiques.

  • Recherche à sémantique conditionnelle : lieu obligatoire, dates optionnelles pour chercher mais obligatoires pour réserver, à la minute près.
  • Page produit à stock et prix conditionnels (avec / sans dates), rendue à l’identique sur web et mobile.
  • Migration progressive en strangler fig, sans big-bang, au sein d’une équipe produit structurée.

Stack technique

BackendNode.js / Fastify · microservices · OTP / authentification · PostgreSQL
FrontendNext.js / React · React Native · deep links / universal links
PaiementsPayline · wallet & auto-recharge · carte cadeau · chèques-vacances
Legacy & migrationPHP / Sylius (base « sylius ») → Node.js (« octopus ») · strangler fig · GCP / GKE Autopilot · Helm · Traefik
MéthodeDéveloppement assisté par Cursor · orchestration multi-agents

Un contexte similaire ?

Planifier un échange