---
title: "Générateur de sites e-commerce avec CMS de personnalisation (alias MyEasyWeb)"
description: "Plateforme SaaS multi-tenant generant des sites e-commerce personnalisés pour 400+ revendeurs du marche européen de l'objet publicitaire - 108K lignes de code, 7 langues, 32 devises, 1 506 commits sur ~3 ans."
locale: "fr"
canonical: "https://portfolio.josedacosta.info/fr/realisations/generateur-sites-ecommerce-avec-cms"
source: "https://portfolio.josedacosta.info/fr/realisations/generateur-sites-ecommerce-avec-cms.md"
html_source: "https://portfolio.josedacosta.info/fr/realisations/generateur-sites-ecommerce-avec-cms"
author: "José DA COSTA"
date: "2012"
type: "achievement"
slug: "generateur-sites-ecommerce-avec-cms"
tags: ["PHP 5.3+", "Symfony 2.4", "Symfony 3.1", "Silex 2.0", "MySQL", "Doctrine ORM", "Apache Solr", "ElasticSearch", "Memcached", "Twig", "Amazon SES", "jQuery", "REST API (FOS)"]
generated_at: "2026-05-26T15:38:54.310Z"
---

# Générateur de sites e-commerce avec CMS de personnalisation (alias MyEasyWeb)

Plateforme SaaS multi-tenant generant des sites e-commerce personnalisés pour 400+ revendeurs du marche européen de l'objet publicitaire - 108K lignes de code, 7 langues, 32 devises, 1 506 commits sur ~3 ans.

**Date:** 2013 - 2016  
**Durée:** ~3 ans  
**Rôle:** Senior Software Engineer  
**Technologies:** PHP 5.3+, Symfony 2.4, Symfony 3.1, Silex 2.0, MySQL, Doctrine ORM, Apache Solr, ElasticSearch, Memcached, Twig, Amazon SES, jQuery, REST API (FOS)

### Indicateurs clés

- Lignes de code: **-** - PHP, CSS, JS, Twig sur 3 applications
- Sites clients: **-** - Sites revendeurs actifs avec domaines propres
- Langues: **-** - FR, EN, ES, DE, IT, NL, PT
- Devises: **-** - Taux de change BCE, mise a jour automatique

## Présentation du projet

_Ce qu'est MyEasyWeb et pourquoi il existe_

### Trois applications interconnectées

### myeasyweb.net

Application principale : front catalogue public + back-office revendeur (Symfony 2.4)

### bo.myeasyweb.pro

Back-office d'administration interne pour l'équipe European Sourcing (Symfony 3.1)

### Site vitrine et moteur de recherche produits (Silex 2.0)

### Fonctionnalites du back-office

- MyEasyWeb est une **plateforme SaaS multi-tenant** qui généré des sites e-commerce en marque blanche pour les revendeurs d'objets publicitaires. Developpee par **Medialeads** pour **European Sourcing**, leader européen des bases de données d'objets promotionnels, la plateforme permet a chaque revendeur (distributeur) de disposer de son propre site web personnalisé - avec son logo, ses couleurs, son nom de domaine et son catalogue configure - tout en étant alimente automatiquement par la base centralisée European Sourcing de plus de **520 000 produits** provenant de 800+ fournisseurs.
- Le système se compose de **trois applications distinctes** : le front-end principal et le back-office revendeur (myeasyweb.net, Symfony 2.4), un back-office d'administration interne pour l'équipe European Sourcing (bo.myeasyweb.pro, Symfony 3.1), et un site vitrine/moteur de recherche produits (myeasyweb.pro, Silex 2.0). Chaque site revendeur est identifié par son nom de domaine, et l'application charge dynamiquement la configuration correspondante (theme, langues, fournisseurs, marges) a chaque requête.

- Dashboard avec commandes recentes, contacts, produits et statistiques newsletter
- Personnalisation complète du site : themes, couleurs, polices, logos, docs d'en-tete, CSS custom
- Catalogue produits avec recherche full-text Solr/ElasticSearch et filtrage fournisseurs
- Système de devis en ligne avec montants minimaux configurables et notifications email (Amazon SES)
- Système publicitaire complet : diaporamas, bannieres, skyscrapers, publicites par categorie
- Tableaux de bord statistiques : devis, contacts, consultations produits, recherches
- Pages corporates, menus personnalisés et module de téléchargements pour le contenu éditorial libre
- SEO avancé : catégories SEO personnalisées, meta-données, sitemap XML et intégration Google Analytics
- Internationalisation : 7 langues (FR, EN, ES, DE, IT, NL, PT) et 32 devises avec taux ECB automatisés

### myeasyweb.pro

## Objectifs, contexte et risques

_Vision stratégique et defis de la plateforme_

### Sites professionnels pour revendeurs sans compétence technique

### FR, EN, ES, DE, IT, NL, PT

### Taux de change BCE, mise a jour quotidienne

### Base centralisée de 800+ fournisseurs

### Branding entièrement personnalisable par revendeur

### Contexte

### Enjeux

### Risques identifiés

### Complexité multi-tenant

400+ sites pilotés depuis un code base unique avec personnalisation par tenant - un pattern cohérent avec les pratiques SaaS de la décennie 2008-2014.

### Hachage mots de passe (état de l'art 2012)

C'était l'état de l'art de l'écosystème PHP du début des années 2010 - reflet des contraintes techniques de l'époque. Les standards modernes (bcrypt, argon2) se sont généralisés depuis.

### Concentration moteur de recherche

Instance Solr unique pour la recherche produits - c'était l'état de l'art à l'époque, cohérent avec les pratiques de la décennie 2008-2014, avant que les clusters multi-nœuds et ElasticSearch ne deviennent la norme pour la haute disponibilité.

### Schéma de base partagé

Accès inter-applications a une base relationnelle commune - c'était l'état de l'art à l'époque, cohérent avec les architectures pragmatiques de la décennie 2008-2014, avant la généralisation des microservices et des APIs par contexte métier.

MyEasyWeb a été construit avec un objectif clair de monétisation B2B : offrir a chaque revendeur d'objets publicitaires en Europe un site web clé en main connecté a la base European Sourcing, generant des revenus récurrents et ancrant les revendeurs dans l'écosystème.

Sites clé en main

### 400+ en ligne

Multi-langue

### 7 langues

Multi-devise

### 32 devises

Catalogue produits

### 520K+ produits

Personnalisation

### 3 themes

Le projet s'inscrit dans un **écosystème plus large** chez Medialeads/European Sourcing, comprenant la marketplace European Sourcing, l'extranet revendeurs, les outils de traduction, les pipelines d'import de données et d'autres produits B2B. L'infrastructure existante disposait déjà d'une **base MySQL centralisée**, d'un **moteur de recherche Apache Solr** et d'un système d'API interne. Le développement a commence sous **SVN** avant de migrer vers **GitHub** en 2016.

MyEasyWeb impacte directement le **modèle de revenus** d'European Sourcing : chaque site revendeur généré du volume d'affaires pour les fournisseurs de la plateforme. Au-dela du chiffre d'affaires, la plateforme sert d'**outil de fidélisation** - en fournissant un site web professionnel gratuit, European Sourcing ancre ses revendeurs dans son écosystème plutot que chez la concurrence.

## Phases de réalisation

_Quatre ans de développement, des fondations a la maturite_

### Fondations et architecture multi-tenant (2012 - 2013)

- J'ai développé l'application principale (myeasyweb.net) avec Symfony 2.4 sous SVN
- Côté architecture, j'ai conçu et implémenté le multi-tenant : détection de domaine, chargement dynamique de la configuration
- Pour l'accès aux données, j'ai branché l'application sur la base MySQL European Sourcing existante et le moteur de recherche Apache Solr
- Sur le back-office revendeur, j'ai construit la gestion de contenu, les statistiques, les devis et la configuration des marges
- Pour clore la phase, j'ai déployé les premiers sites revendeurs avec leurs noms de domaine personnalisés

### Enrichissement fonctionnel et montee en charge (2014 - 2015)

- J'ai bâti le système publicitaire complet : diaporamas, bannières simples, publicités 4 emplacements, skyscrapers, publicités par catégorie
- Côté navigation, j'ai implémenté les menus personnalisés avec support des liens et des pages intégrées
- Sur le volet statistiques, j'ai développé des tableaux de bord détaillés : devis, contacts, produits, recherches
- Pour mesurer l'audience, j'ai intégré le suivi Google Analytics par site revendeur
- Pour la communication commerciale, j'ai ajouté la gestion et l'envoi de newsletters
- Côté SEO, j'ai développé les catégories personnalisées, les sitemaps XML et la gestion des meta-données
- Côté visuel, j'ai porté la plateforme à 3 thèmes avec une couche commune partagée et des polices web personnalisées

### Modernisation et nouveau back-office (2016 (T3))

- J'ai développé bo.myeasyweb.pro en Symfony 3.1 - le nouveau back-office d'administration interne
- Côté API, j'ai implémenté l'architecture REST (FOSRestBundle + JMSSerializer) pour la gestion centralisée des sites
- Pour rapprocher les données, j'ai construit le service de synchronisation entre les bases interne et revendeur
- Sur le volet i18n, j'ai ajouté le système de gestion des traductions (TranslatableListener, Locale, CategoryTranslation)
- En parallèle, j'ai piloté la migration du contrôle de version de SVN vers GitHub (organisation : medialeads)

### Site vitrine et recherche (2016 (T4))

- J'ai développé le site vitrine myeasyweb.pro avec le micro-framework Silex 2.0
- Pour la recherche, j'ai intégré **ElasticSearch** avec une bibliothèque PHP maison (lib/ElasticSearch/)
- Côté front, j'ai construit les pages de recherche produits avec des templates Twig (Home, Search, Layout)

### Phase 1

- Phase 1
- Phase 2
- Phase 3
- Phase 4

## Acteurs et interactions

_Comment j'ai collaboré au sein d'une équipe de 5 développeurs et 1 506 commits_

### Répartition des commits par développeur

### Contributions de l'équipe

### Parties prenantes externes avec qui j'ai interagi

- J'ai construit ce projet au sein de **Medialeads**, une société éditrice de produits pour **European Sourcing** - le leader européen des bases de données d'objets publicitaires. Avec l'équipe de **5 développeurs** réunie autour de 3 dépôts, j'ai porté **~65 % de l'ensemble des commits** en tant que **développeur lead**.

### Développeur

### Role

### Commits

### %

### Périmètre

Au-delà de l'équipe technique, j'ai interagi avec de multiples acteurs externes : les **fournisseurs d'objets publicitaires** dont les catalogues alimentaient la plateforme via l'API European Sourcing ; les **revendeurs**, utilisateurs directs du back-office MyEasyWeb que je livrais ; **OVH**, dont j'exploitais les serveurs dédiés ; **Amazon Web Services**, que j'utilisais pour l'envoi d'emails via SES ; et **GitHub**, où j'ai fait migrer le code sous l'organisation medialeads.

## Résultats et livrables

_Ce qui a été accompli sur 4+ ans de développement_

### Entites en base

41 (principal) + 10 (ES) + 10 (BO) + 6 (partage)

### Controllers

44 (principal) + 13 (BO admin)

### Routes/Endpoints API

Sur myeasyweb.net uniquement

### Commits totaux

Sur 3 dépôts, 5 développeurs

### Themes visuels

Entierement personnalisables par revendeur

### Fichiers de stats

Statistiques fournisseurs (2012-2015)

### Répartition des entites par base de données

### Métriques d'architecture technique

### Capacites de la plateforme

- **Architecture SaaS multi-tenant** : j'ai conçu et maintenu un codebase unique servant 400+ sites de marque indépendants - un pattern que j'applique désormais à chaque projet SaaS.
- **Expertise PHP full-stack** : côté framework, j'ai affûté ma maîtrise de l'écosystème Symfony 2.x (Doctrine, Twig, sécurité, traductions, bundles) sous contraintes de production réelles.
- **Intégration de moteurs de recherche** : sur des catalogues massifs, j'ai acquis une expérience pratique d'**Apache Solr** puis d'**ElasticSearch** pour la recherche full-text de produits.
- **Domaine e-commerce B2B** : j'ai acquis une compréhension approfondie de la gestion de catalogues, de la tarification/marges, des workflows de devis, de la synchronisation fournisseurs et du multi-devise.
- **Architecture base de données** : au quotidien, j'ai travaillé avec la réplication MySQL maître/esclave, le cache Memcached et des bases de données partagées entre applications.
- **Leadership technique** : j'ai coordonné le développement sur 3 dépôts avec 4 autres développeurs en workflow par branches, de SVN à Git. Ce projet a changé ma façon de travailler : je pense désormais chaque nouvelle plateforme en multi-tenant par défaut.

### 67

### 57

### 136

### 1 506

### 3 + common

### 1 355

### Pour l'entreprise

MyEasyWeb a permis a European Sourcing de **fidéliser son réseau de 400+ revendeurs** en leur offrant un site web professionnel gratuit, personnalisé et directement connecté a la base produits. Chaque site revendeur **généré indirectement du volume d'affaires** pour les fournisseurs de la plateforme.

### Pour moi personnellement

En tant que développeur lead responsable de près des deux tiers du code, ce projet a été pour moi une expérience professionnelle marquante :

## Les lendemains du projet

_Évolution et héritage de la plateforme_

### État actuel

À la fin de mon implication, la plateforme avait atteint une **maturité opérationnelle** et démontré la viabilité des approches multi-tenant pour les marchés de niche B2B - une architecture durable pensée pour traverser plusieurs générations technologiques.

## Mon regard critique

_Comment je juge ce projet avec le recul_

### Points forts

- Avec le recul, je reste fier de l'**architecture multi-tenant** : un codebase unique pour 400+ sites avec personnalisations individuelles - un vrai produit SaaS, pas des sites isolés.
- Côté produit, j'ai livré un back-office revendeur très riche : publicité, stats, SEO, newsletters, marges, téléchargements, pages corporates - bien au-delà d'un simple CMS.
- Sur l'infra, je revendique des choix de montée en charge réfléchis : réplication MySQL maître/esclave, Memcached, Solr, Amazon SES.
- Je suis satisfait d'avoir pensé le multi-langue et le multi-devise dès la conception : 7 langues et 32 devises intégrées nativement au modèle de données.

### Points d'amélioration

- Côté **couverture de tests**, j'ai produit peu de tests automatisés - c'était l'état de l'art à l'époque, cohérent avec les pratiques PHP de la décennie 2008-2014, avant que PHPUnit et la CI ne se généralisent dans les codebases de production.
- J'ai laissé s'accumuler ~38K lignes de CSS - reflet des contraintes techniques front-end de l'époque, avant la généralisation des design systems et des pré-processeurs modernes.
- Sur le **déploiement**, je m'appuyais sur des scripts shell - c'était l'état de l'art à l'époque pour les petites équipes, cohérent avec les pratiques 2008-2014, avant la généralisation des pipelines CI/CD.

### Les enseignements durables que ce projet m'a apportés

- **Le multi-tenant est un multiplicateur de valeur** : j'ai vu qu'un codebase unique servant 400+ clients génère un ROI bien supérieur aux développements sur mesure, à condition de bien structurer la couche de personnalisation.
- **La dette technique croît avec le succès** : plus j'ajoutais de clients et de fonctionnalités, plus le risque de dette CSS/tests/sécurité grossissait dès que je ne mesurais pas la qualité en continu.
- **La documentation opérationnelle** : j'ai retenu qu'un wiki avec URLs, commandes et crontabs est aussi critique que la documentation architecturale pour la survie long terme d'un projet.

### Contexte additionnel

- Architecture et diagrammes
- Infrastructure et déploiement
- Environnements de développement, recette et production
- Parcours associe
- Ingénieur logiciel senior - Medialeads
- Développeur lead chez Medialeads, construction de l'écosystème B2B European Sourcing

## Compétences mobilisées

_Compétences techniques et humaines appliquées_

- **[Leadership & Management d'Équipe](https://portfolio.josedacosta.info/fr/competences/leadership-management-equipe.md)** - Pilotage du dev en tant que contributeur principal (64,6 % des commits)
- **[Résolution de Problèmes & Adaptabilité](https://portfolio.josedacosta.info/fr/competences/resolution-de-problemes-adaptabilite.md)** - Solr/ElasticSearch et catalogue 520K+ produits en 7 langues et 32 devises, Intégration de formats hétérogènes, recherche multilingue 7 langues, optimisation catalogue massif
- **[Architecture Logicielle & Système](https://portfolio.josedacosta.info/fr/competences/architecture-logicielle-systeme.md)** - SaaS multi-tenant servant 400+ sites de revendeurs en marque blanche. API REST Symfony 2.4 (FOSRestBundle, JMSSerializer, WSSE) pour la synchronisation inter-applications
- **[Développement Fullstack](https://portfolio.josedacosta.info/fr/competences/developpement-fullstack.md)** - 108K LOC sur 3 apps interconnectées avec 1 506 commits sur 4+ ans
- **[DevOps, Cloud & Industrialisation Production](https://portfolio.josedacosta.info/fr/competences/devops-cloud-industrialisation-production.md)** - Migration SVN vers GitHub en 2016, infrastructure OVH dédiée, déploiements manuels pré-CI/CD
- **[Données, IA & Machine Learning](https://portfolio.josedacosta.info/fr/competences/donnees-ia-machine-learning.md)** - 67 entités MySQL avec Doctrine sur architecture multi-tenant
- **[SEO & Growth Hacking](https://portfolio.josedacosta.info/fr/competences/seo-growth-hacking.md)** - Organic acquisition was central to the model: 400+ multi-domain branded shops with localized URLs, multilingual SEO across 7 languages, and SERP-driven catalog architecture
- **[UI Design & UX Design](https://portfolio.josedacosta.info/fr/competences/ui-design-ux-design.md)** - Designed the customization CMS UX so non-technical resellers could brand and configure their shop end-to-end without developer support

## Parcours associé

_Expérience professionnelle liée à cette réalisation_

- **Senior Software Engineer · lead développeur PHP Symfony**

## Galerie d'images

_Captures et visuels du projet_

## Vous avez un site builder SaaS a concevoir ?

J'ai cree MyEasyWeb, le site builder SaaS : editeur visuel drag-and-drop, bibliotheque de templates et hebergement integre. Parlons de votre contexte.

**Contactez-moi**
