~/cvexperience

Expérience.

Six ans à industrialiser des moteurs e‑commerce, à outiller le métier et à moderniser des fronts. Sélection brute, par projet.

  1. 01.01

    ERP Goji

    // produit interne déployé en SaaS multi-clients

    Conception et développement d'un ERP métier complet, principal contributeur. Déployé en interne et en SaaS pour des clients externes. Micro-framework maison bâti sur les composants Symfony, infrastructure Docker.

    • Modules métier : commercial (clients, fournisseurs, devis, commandes, factures), prospection, stocks, RH (contrats, congés, préparation de la paie)
    • Architecture micro-framework sur composants Symfony (routing, http-foundation, event-dispatcher, messenger, security, serializer, validator, twig-bridge)
    • API REST exposant le métier, flux temps réel via Mercure
    • PostgreSQL 18, Redis (cache et sessions), Typesense (recherche full-text), RabbitMQ (bus de messages async via Symfony Messenger AMQP)
    • Facturation dématérialisée Factur-X, génération PDF (wkhtmltopdf, pdftk), signature électronique
    • Auth JWT, intégrations Brevo (mail transactionnel), OVH SDK, Google reCAPTCHA Enterprise, feature toggles
    • Tests Codeception et PHPUnit : unitaires, fonctionnels et acceptance Selenium
    • Migrations Phinx, refactor outillé par Rector, monitoring Sentry, logs Graylog (GELF)
    • Stack Docker complète (Caddy, php-fpm, worker php-consume, Postgres, Redis, Typesense, RabbitMQ, MailCatcher, Adminer) et CI/CD GitLab
    • Déploiement SaaS : instance dédiée par client avec configuration spécifique, supervision unifiée
    php 8.5symfony 8postgres 18redisrabbitmqtypesensemercuredockercaddygitlab cicodeceptionfactur-xjwt
  2. 01.02

    Moteur e-commerce

    Modernisation et industrialisation du moteur e-commerce historique : reprise du code, refactor profond, mise sous CI/CD, migration vers PHP 8.5.

    • Support multi-langue catalogue, nouvelle architecture, refactor en profondeur
    • Amélioration du paramétrage SEO
    • Migration PHP 7.4 puis PHP 8.5
    • Gestion des dépendances Composer / NPM, autoloading PSR-4
    • Mise en place de git et de la stratégie de branches
    • Pipeline CI/CD GitLab pour déploiements démo et production
    • Tests unitaires et fonctionnels avec Codeception / PHPUnit
    php 8.5symfony 8composergitlab cicodeceptionphpunit
  3. 01.03

    Refonte de l'écosystème front

    // SSR multi-tenant sur serveur Node maison

    Modernisation des projets front (vitrines, catalogues) en Vue 3 + Vite, avec rendu côté serveur via un serveur Node Koa multi-tenant et un fork de vite-ssr maintenu en interne, publié sur npm.

    • Projet de base réutilisable pour les futurs fronts, composants partagés identifiés et implémentés
    • Mode SSR en production pour améliorer le référencement des sites Vue
    • Serveur Node.js TypeScript (Koa) qui route les requêtes par host : un site-manifest.json mappe chaque domaine vers un bundle SSR, chargé dynamiquement à la volée
    • Fork du plugin frandiox/vite-ssr maintenu et publié en interne sous @mcn-info/vite-ssr sur npm
    • Arrêt gracieux via http-terminator, logs typés, configuration .env
    vue 3vitetypescriptkoassrvite-ssrnpmmulti-tenant
  4. 01.04

    Configurateur d'escale, Aéroport Rouen-Boos

    Configurateur Vue 3 + Symfony 8 pour estimer le coût d'une escale, avec récapitulatif PDF et demande de devis asynchrone.

    • Projet Vue 3 + Symfony 8, session éphémère, contact aéroport par mail
    • Récapitulatif PDF de la configuration via wkhtmltopdf
    • EventDispatcher + BusMessenger + RabbitMQ pour un envoi de mail asynchrone fluide
    vue 3symfony 8rabbitmqwkhtmltopdfpdf
  5. 01.05

    Infrastructure LLM locale

    // inférence on-premise, RAG branché sur l'ERP Goji

    Conception et mise en production d'une plateforme d'inférence LLM auto-hébergée pour MCN : orchestration Docker Compose d'instances vLLM sur GPU, interface Open WebUI, pipeline RAG raccordé aux ERP Goji et chaîne audio de retranscription et diarization.

    • Orchestration Docker Compose multi-services sur GPU : instances vLLM dédiées Qwen 3.6 27B (chat généraliste), Mistral Small 3.2 24B (alternative et fallback), reranker BGE M3 et embeddings BGE M3
    • Open WebUI en interface unifiée : chat multi-utilisateurs, sélection de modèle, gestion des espaces et des permissions, historique conversationnel, outillage configuré (web fetch générique, MCP Haloscan, web fetch spécialisé SEO)
    • Pipeline RAG branché sur les instances ERP Goji : ingestion et chunking des documents métier, vectorisation via BGE M3, reranking BGE M3 pour la pertinence des passages, restitution contextualisée dans l'outil
    • Chaîne audio : retranscription via Speaches (backend Whisper) et diarization via Pyannote pour identifier et séparer les locuteurs
    • Gestion des ressources GPU partagées entre instances, mise au point des paramètres d'inférence par modèle
    • Monitoring du serveur via Prometheus et tableaux de bord Grafana : métriques GPU (charge, VRAM, température), latence et débit de tokens par modèle, santé des services, alertes
    • Données qui ne quittent pas l'infrastructure : maîtrise complète du cycle d'inférence, pas de dépendance aux fournisseurs LLM tiers pour les usages internes et clients
    vllmdocker composeqwen 3mistral smallbge m3ragopen webuiwhisperpyannotegpuprometheusgrafanallm self-hosted
02

Projets perso

freelance, code de week-enden parallèle
  1. 02.01

    Site du groupe FMR

    // site et back-office pour le groupe de musique de mon père

    Conception et développement complet du site du groupe FMR en production sur fmr-music.fr : API REST Symfony 8, front public Vue 3 SSR et back-office SPA Vue 3, le tout orchestré en Docker Compose derrière un Nginx.

    • API REST Symfony 8 / PHP 8.5, Doctrine ORM, PostgreSQL 17 : entités Article (blog), Concert (avec photos), ContactMessage et User
    • Front public Vue 3 SSR (Express + Vite) : accueil, blog, discographie, musiciens, concerts géolocalisés via Leaflet, formulaire de contact
    • Back-office SPA Vue 3 + Tailwind CSS v4 + Lucide : authentification JWT, CRUD articles et concerts, upload de photos, modération des messages
    • Auth JWT via LexikJWTAuthenticationBundle et firewall json_login Symfony, rate limiting sur le contact et le login
    • Pipeline image (GD) : génération automatique de variantes WebP (vignette, medium, large) avec extraction des dimensions
    • SEO : slugs uniques générés (titre + date), sitemap dynamique avec cache, ping IndexNow à la publication, JSON-LD Article et Event (schema.org)
    • Mailer asynchrone (DeferredMailer flushé sur kernel.terminate) pour les notifications de contact sans bloquer la réponse HTTP
    • Sanitisation HTML des articles via le composant HtmlSanitizer de Symfony
    • Infrastructure Docker (Nginx, PHP-FPM, Postgres 17, Node 24), déploiement par script SSH segmenté par couche (front, admin, api)
    • Audit de sécurité automatisé via GitHub Actions : composer audit et npm audit hebdomadaires
    symfony 8php 8.5vue 3vitessrpiniatailwind v4postgres 17jwtdockernginxleaflet
  2. 02.02

    Car-Service

    // gestion de flotte et veille marché carburants

    Application full-stack pour piloter une flotte de véhicules (ravitaillements, entretiens, lavages) et corréler les prix carburant à la conjoncture pétrolière. Backend Symfony 7.4 en DDD strict, front Vue 3 + TypeScript + Tailwind v4, et un moteur de prédiction maison.

    • Architecture Domain-Driven Design : 9 bounded contexts (Auth, Vehicle, Activities, FuelPrice, Market, Procurement, Dashboard, System, Shared) avec ports et adapters
    • Backend Symfony 7.4 / PHP 8.5 (strict types, property hooks, asymmetric visibility, opérateur pipe), Doctrine ORM 3, PHPStan niveau 8, 581 tests PHPUnit
    • Frontend Vue 3.5 + TypeScript 5.9 + Vite 6, Pinia 3, Vue Router 4 avec auth guard, TanStack Vue Table, ApexCharts, Vee-Validate + Yup, design system maison sur Radix Vue, 508 tests Vitest
    • Auth multi-facteur : JWT (LexikJWT) et WebAuthn (clés FIDO2 stockées côté serveur, challenges générés à la volée)
    • Veille carburants : ingestion biquotidienne de l'API gouvernementale française (XML), scraping de mon-essence.fr pour enrichir les stations avec prix communautaires et géolocalisation, dédoublonnage et classification automatique des enseignes
    • Moteur de prédiction maison : régressions pondérées exponentiellement et piecewise, détection de régime de marché, calibration et backtest, blending de signaux (saisonnalité, jours fériés, barrières de prix, OPEP, politiques publiques)
    • Veille marché pétrolier : Brent et WTI via EIA et Yahoo Finance, gaz naturel, or et argent via Alpha Vantage, taux EUR/USD via la BCE et frankfurter.dev, agrégation news (NewsAPI, Newsdata, Google News, GDELT) avec scoring d'impact par LLM (Qwen 2.5 local et Claude Haiku)
    • Scheduler Symfony Messenger (consumer dédié) qui orchestre une vingtaine de jobs cron récurrents : synchronisation prix, classification, prédictions, news, fondamentaux EIA, commodities, FX
    • Observabilité : logs d'appels API par fournisseur, tableau de bord d'usage et de coût, monitoring santé des services, Sentry pour le suivi d'erreurs
    • Infrastructure Docker Compose (PostgreSQL 18, Redis, nginx, php-fpm, node, scheduler), CI GitLab, Makefile complet pour le workflow dev (sync bind-mount OverlayFS, cache-clear, tests, qualité)
    php 8.5symfony 7.4ddddoctrine 3phpstan 8webauthnjwtvue 3typescripttailwind v4piniaapexchartspostgres 18redisdockersymfony messengersentry
end of file · 7 entries