---
title: "E-Commerce Site Generator with Customization CMS (alias MyEasyWeb)"
description: "Multi-tenant SaaS platform generating custom e-commerce sites for 400+ resellers in the European promotional products industry - 108K lines of code, 7 languages, 32 currencies, 1,506 commits over ~3 years."
locale: "en"
canonical: "https://portfolio.josedacosta.net/en/achievements/generateur-sites-ecommerce-avec-cms"
source: "https://portfolio.josedacosta.net/en/achievements/generateur-sites-ecommerce-avec-cms.md"
html_source: "https://portfolio.josedacosta.net/en/achievements/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-06-02T15:37:47.393Z"
---

# E-Commerce Site Generator with Customization CMS (alias MyEasyWeb)

Multi-tenant SaaS platform generating custom e-commerce sites for 400+ resellers in the European promotional products industry - 108K lines of code, 7 languages, 32 currencies, 1,506 commits over ~3 years.

**Date:** 2013 - 2016  
**Duration:** ~3 years  
**Role:** 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)

### Key Metrics

- Lines of Code: **-** - PHP, CSS, JS, Twig across 3 applications
- Client Sites: **-** - Active reseller sites with custom domains
- Languages: **-** - FR, EN, ES, DE, IT, NL, PT
- Currencies: **-** - ECB exchange rates, auto-updated

## Project Overview

_What MyEasyWeb is and why it exists_

### Three Interconnected Applications

### Main application: public catalog front-end + reseller back-office (Symfony 2.4)

### Internal administration back-office for European Sourcing staff (Symfony 3.1)

### Showcase website and product search engine (Silex 2.0)

### Back-Office Features

- MyEasyWeb is a **multi-tenant SaaS platform** that generates white-label e-commerce websites for resellers of promotional products. Developed by **Medialeads** for **European Sourcing**, the European leader in promotional product databases, the platform allows each reseller (distributor) to have their own branded website - with their logo, colors, domain name, and customized catalog - while being automatically fed by the centralized European Sourcing database of over **520,000 products** from 800+ suppliers.
- The system is composed of **three distinct applications**: the main front-end and reseller back-office (myeasyweb.net, Symfony 2.4), an internal administration back-office for European Sourcing staff (bo.myeasyweb.pro, Symfony 3.1), and a showcase/product search site (myeasyweb.pro, Silex 2.0). Each reseller site is identified by its domain name, and the application dynamically loads the corresponding configuration (theme, languages, suppliers, margins) on every request.

- Dashboard with recent orders, contacts, products, and newsletter statistics
- Full site customization: themes, colors, fonts, logos, header docs, CSS overrides
- Product catalog with Solr/ElasticSearch full-text search and supplier filtering
- Quote request system with configurable minimum amounts and email notifications (Amazon SES)
- Complete advertising system: slideshows, banners, skyscrapers, category ads
- Statistics dashboards: quotes, contacts, product views, search queries
- Corporate pages, custom menus, and downloads module for free editorial content
- Advanced SEO: custom SEO categories, meta-data, XML sitemap, and Google Analytics integration
- Internationalization: 7 languages (FR, EN, ES, DE, IT, NL, PT) and 32 currencies with automated ECB rates

### myeasyweb.net

### bo.myeasyweb.pro

### myeasyweb.pro

## Objectives, Context & Risks

_Strategic vision and challenges behind the platform_

### Professional sites for resellers with zero technical skills

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

### ECB exchange rates, automatic daily updates

### Centralized database from 800+ suppliers

### Fully customizable branding per reseller

### Context

### Stakes

### Identified Risks

### Multi-Tenant Complexity

400+ sites driven from a single codebase with per-tenant customization - a pattern consistent with the SaaS engineering practices of the 2008-2014 decade.

### Password Hashing (state of the art 2012)

MD5-based hashing was the state of the art across mainstream PHP ecosystems of the early 2010s - a reflection of the era's technical constraints. Modern standards (bcrypt/argon2) generalized later.

### Search Engine Concentration

Single Solr instance feeding the catalog - state of the art at the time, consistent with 2008-2014 practices, before multi-node ElasticSearch clusters became the standard for high-availability search.

### Shared Database Pattern

Multi-application access to a shared relational schema - state of the art at the time, consistent with the pragmatic architectures of the 2008-2014 decade, before microservices and bounded-context APIs generalized.

MyEasyWeb was built with a clear B2B monetization objective: give every promotional product reseller in Europe a turnkey website that connects to the European Sourcing database, generating recurring revenue and locking resellers into the ecosystem.

Turnkey Sites

### 400+ live

Multi-Language

### 7 languages

Multi-Currency

### 32 currencies

Product Catalog

### 520K+ products

Customization

### 3 themes

The project sits within a **larger ecosystem** at Medialeads/European Sourcing, which includes the main European Sourcing marketplace, reseller extranet, translation tools, data import pipelines, and other B2B products. The existing infrastructure already had a **centralized MySQL database**, an **Apache Solr search engine**, and an internal API system. Development started under **SVN** before migrating to **GitHub** in 2016.

MyEasyWeb directly impacts European Sourcing's **revenue model**: each reseller site generates business volume for platform suppliers. Beyond revenue, the platform serves as a **client retention tool** - by providing a free, professional website, European Sourcing keeps resellers locked into its ecosystem rather than competing alternatives.

## Implementation Phases

_Four years of development from foundation to maturity_

### Foundation & Multi-Tenant Architecture (2012 - 2013)

- I developed the main application (myeasyweb.net) with Symfony 2.4 on SVN
- On the architecture side, I designed and implemented the multi-tenant layer: domain-based site detection, dynamic configuration loading
- For data access, I wired the application to the existing European Sourcing MySQL database and the Apache Solr search engine
- On the reseller back-office, I built the content management, statistics, quote handling and margin configuration features
- To close the phase, I deployed the first batch of reseller sites with their custom domains

### Feature Enrichment & Scale (2014 - 2015)

- I built the full advertising system: slideshows, simple banners, 4-slot ads, skyscrapers, category ads
- On the navigation side, I implemented custom menus with support for links and embedded pages
- On the statistics front, I developed detailed dashboards covering quotes, contacts, products and searches
- To measure audience, I integrated Google Analytics tracking per reseller site
- For commercial communication, I added newsletter management and dispatch capabilities
- On the SEO side, I developed the custom categories, XML sitemaps and meta-data management
- On the visual side, I expanded the platform to 3 themes with a shared common layer and custom web fonts

### Modernization & New Back-Office (2016 (Q3))

- I developed bo.myeasyweb.pro in Symfony 3.1 - the new internal administration back-office
- On the API side, I implemented the REST architecture (FOSRestBundle + JMSSerializer) for centralized site management
- To reconcile the data, I built the synchronization service between the internal and reseller databases
- On the i18n side, I added the translation management system (TranslatableListener, Locale, CategoryTranslation)
- In parallel, I led the migration of version control from SVN to GitHub (organization: medialeads)

### Showcase Site & Search (2016 (Q4))

- I developed the myeasyweb.pro showcase site with the Silex 2.0 micro-framework
- For search, I integrated **ElasticSearch** with a custom in-house PHP library (lib/ElasticSearch/)
- On the front side, I built the product search pages with Home, Search and Layout Twig partials

### Phase 1

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

## Actors & Interactions

_How I collaborated within a team of 5 developers and 1,506 commits_

### Commit Distribution by Developer

### Team Contribution Breakdown

### External stakeholders I interacted with

- I built this project within **Medialeads**, a software company developing products for **European Sourcing** - the European leader in promotional product databases. Alongside a team of **5 developers** gathered around 3 repositories, I carried **~65% of all commits** as the **lead developer**.

### Developer

### Role

### Commits

### %

### Scope

Beyond the core team, I interacted with multiple external actors: **promotional product suppliers** whose catalogs fed the platform via the European Sourcing API; **resellers**, the direct users of the MyEasyWeb back-office I was delivering; **OVH**, whose dedicated servers I was operating; **Amazon Web Services**, which I used for SES email delivery; and **GitHub**, where I migrated the code under the medialeads organization.

## Results & Deliverables

_What was achieved over 4+ years of development_

### Database Entities

41 (main) + 10 (ES) + 10 (BO) + 6 (shared)

### Controllers

44 (main) + 13 (BO admin)

### API Routes/Endpoints

On myeasyweb.net alone

### Total Commits

Across 3 repositories, 5 developers

### Visual Themes

Fully customizable per reseller

### Stat Files

Supplier statistics files (2012-2015)

### Entity Distribution Across Databases

### Technical Architecture Metrics

### Platform Capabilities

- **Multi-tenant SaaS architecture**: I designed and maintained a single codebase serving 400+ independently branded sites - a pattern I now apply to every SaaS project.
- **Full-stack PHP expertise**: on the framework side, I sharpened my mastery of the Symfony 2.x ecosystem (Doctrine, Twig, security, translations, bundles) under real production constraints.
- **Search engine integration**: on massive catalogs, I gained hands-on experience with **Apache Solr** then **ElasticSearch** for full-text product search.
- **B2B e-commerce domain**: I gained a deep understanding of catalog management, pricing/margins, quote workflows, supplier data synchronization and multi-currency handling.
- **Database architecture**: day in and day out, I worked with MySQL master/slave replication, Memcached caching, and cross-application shared databases.
- **Technical leadership**: I coordinated development across 3 repositories with 4 other developers using branch-based workflows, from SVN to Git. This project changed the way I work: I now design every new platform as multi-tenant by default.

### 67

### 57

### 136

### 1,506

### 3 + common

### 1,355

### For the Business

MyEasyWeb allowed European Sourcing to **retain its network of 400+ resellers** by offering them a free, professional, branded website directly connected to the product database. Each reseller site **indirectly generates business volume** for the platform's suppliers.

### For Me Personally

As lead developer responsible for nearly two-thirds of the codebase, this project was for me a defining professional experience:

## What Came After

_Evolution and legacy of the platform_

### Current Status

By the end of my involvement, the platform had reached **operational maturity** and demonstrated the viability of multi-tenant approaches for B2B niche markets - a durable architecture built to outlast multiple technology generations.

## My Critical Perspective

_How I judge this project with hindsight_

### Strengths

- With hindsight, I remain proud of the **multi-tenant architecture**: one codebase for 400+ sites with individual customizations - a true SaaS product, not isolated sites.
- On the product side, I delivered a rich reseller back-office covering ads, stats, SEO, newsletters, margins, downloads, corporate pages - well beyond a simple CMS.
- On the infrastructure side, I stand behind the scaling choices I made: MySQL master/slave replication, Memcached, Solr, Amazon SES.
- I take pride in having engineered multi-language and multi-currency from day one: 7 languages and 32 currencies natively built into the data model.

### Areas for Improvement

- On **test coverage**, I produced limited automated tests - state of the art at the time, consistent with the PHP practices of the 2008-2014 decade, before PHPUnit and CI became mainstream in production codebases.
- I let ~38K lines of CSS accumulate - a reflection of the front-end technical constraints of the era, before design systems and modern preprocessors became standard.
- On **deployment**, I relied on shell scripts - state of the art at the time for small teams, consistent with the practices of the 2008-2014 decade, before CI/CD pipelines generalized.

### The lasting lessons this project brought me

- **Multi-tenancy is a value multiplier**: I saw that one codebase serving 400+ clients generates far higher ROI than custom builds, provided the customization layer is well-structured.
- **Technical debt grows with success**: the more clients and features I added, the higher the risk of CSS/test/security debt became whenever I was not measuring quality continuously.
- **Operational documentation**: I take away that a wiki with URLs, commands and crontabs is just as critical as architectural documentation for a project's long-term survival.

### Additional context

- Architecture & Diagrams
- Infrastructure & Deployment
- Development, staging, and production environments
- Related Journey
- Senior Software Engineer - Medialeads
- Lead developer at Medialeads, building the European Sourcing B2B ecosystem

## Skills applied

_Technical and soft skills applied_

- **[Leadership & Team Management](https://portfolio.josedacosta.net/en/skills/leadership-team-management.md)** - Led development as primary contributor (64.6% of commits) across full-stack SaaS platform
- **[Problem Solving & Adaptability](https://portfolio.josedacosta.net/en/skills/problem-solving-adaptability.md)** - Mastered Solr/ElasticSearch search engines, B2B marketplace operations, and 520K+ product catalog with 7 languages and 32 currencies, Integrated heterogeneous supplier formats, multilingual search across 7 languages, massive catalog optimization
- **[Software & System Architecture](https://portfolio.josedacosta.net/en/skills/system-architecture-design.md)** - Designed multi-tenant SaaS architecture serving 400+ branded reseller sites with domain-based detection. Built REST APIs on Symfony 2.4 (FOSRestBundle, JMSSerializer, WSSE) for cross-application synchronization
- **[Fullstack Development](https://portfolio.josedacosta.net/en/skills/fullstack-development.md)** - Led 108K LOC codebase across 3 interconnected apps with 1,506 commits over 4+ years
- **[DevOps, Cloud & Production Industrialization](https://portfolio.josedacosta.net/en/skills/devops-cloud-production.md)** - Led SVN to GitHub migration in 2016, OVH dedicated infrastructure, pre-CI/CD manual deployments
- **[Data, AI & Machine Learning](https://portfolio.josedacosta.net/en/skills/data-ai-machine-learning.md)** - Managed 67 database entities with MySQL and Doctrine ORM across multi-tenant architecture
- **[SEO & Growth Hacking](https://portfolio.josedacosta.net/en/skills/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.net/en/skills/ui-ux-design.md)** - Designed the customization CMS UX so non-technical resellers could brand and configure their shop end-to-end without developer support

## Related journey

_Professional experience linked to this achievement_

- **Senior Software Engineer · Lead PHP Symfony Developer**

## Image gallery

_Project screenshots and visuals_

## Need a SaaS site builder designed?

I created MyEasyWeb, the SaaS site builder: drag-and-drop visual editor, template library and integrated hosting. Let's talk about your context.

**Contact me**
