Contact
Let's work together
MyEasyWeb - White-Label E-Commerce SaaS Platform

MyEasyWeb - White-Label E-Commerce SaaS Platform

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

2013 - 2016
~3 years
Senior Software Engineer (64.6% of commits)
PHP 5.3+Symfony 2.4Symfony 3.1Silex 2.0MySQLDoctrine ORMApache SolrElasticSearchMemcachedTwigAmazon SESjQueryBootstrapApacheREST API (FOS)

Lines of Code

~108,000

PHP, CSS, JS, Twig across 3 applications

Client Sites

40+

Active reseller sites with custom domains

Languages

7

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

Currencies

32

ECB exchange rates, auto-updated

Project Overview

What MyEasyWeb is and why it exists

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 200,000 products from hundreds of 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.

Three Interconnected Applications

myeasyweb.net

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

bo.myeasyweb.pro

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

myeasyweb.pro

Showcase website and product search engine (Silex 2.0)

Back-Office Features (21 modules)
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

Objectives, Context & Risks

Strategic vision and challenges behind the platform

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

40+ live

Professional sites for resellers with zero technical skills

Multi-Language

7 languages

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

Multi-Currency

32 currencies

ECB exchange rates, automatic daily updates

Product Catalog

200K+ products

Centralized database from hundreds of suppliers

Customization

3 themes

Fully customizable branding per reseller

Context

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.

Stakes

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. The international coverage (7 languages, 32 currencies) reflects a pan-European ambition, including a dedicated German site (meineasyweb.de).

Identified Risks

Multi-Tenant Complexity

Managing 40+ sites with individual configurations on a single codebase increases maintenance complexity and deployment risk.

Password Security (MD5)

Passwords encoded in MD5 without salting (iterations: 1) - a known vulnerability even for the era (bcrypt was already recommended).

Solr Single Point of Failure

Product search depends entirely on Solr with daily cron imports - a search engine outage impacts all 40+ sites simultaneously.

Database Coupling

Direct access to the shared europeansourcing database from multiple applications creates tight coupling and schema migration risks.

Implementation Phases

Four years of development from foundation to maturity

Phase 1
Foundation & Multi-Tenant Architecture
2012 - 2013
  • Developed the main application (myeasyweb.net) with Symfony 2.4 on SVN
  • Designed and implemented the multi-tenant architecture: domain-based site detection, dynamic configuration loading
  • Integrated with the existing European Sourcing MySQL database and Apache Solr search engine
  • Built the reseller back-office: content management, statistics, quote handling, margin configuration
  • Deployed the first batch of reseller sites with custom domains
Phase 2
Feature Enrichment & Scale
2014 - 2015
  • Built a complete advertising system: slideshows, simple banners, 4-slot ads, skyscrapers, category ads
  • Implemented custom menus with support for links and embedded pages
  • Developed detailed statistics dashboards: quotes, contacts, products, searches
  • Integrated Google Analytics tracking per reseller site
  • Added newsletter management and dispatch capabilities
  • Built SEO features: custom categories, XML sitemaps, meta-data management
  • Expanded to 3 visual themes with a shared common layer + custom web fonts
Phase 3
Modernization & New Back-Office
2016 (Q3)
  • Developed bo.myeasyweb.pro with Symfony 3.1 - new internal administration back-office
  • Implemented REST API architecture (FOSRestBundle + JMSSerializer) for centralized site management
  • Built site synchronization service between internal and reseller databases
  • Added translation management system (TranslatableListener, Locale, CategoryTranslation)
  • Migrated version control from SVN to GitHub (organization: medialeads)
Phase 4
Showcase Site & Search
2016 (Q4)
  • Developed myeasyweb.pro showcase site using Silex 2.0 micro-framework
  • Integrated ElasticSearch with a custom PHP library (lib/ElasticSearch/)
  • Built product search pages with Home, Search, and Layout templates using Twig partials
  • Backed up all 3 repositories to NAS (last documented activity: December 2016)
Feature Development Over Time
Technical Metrics per Application

Actors & Interactions

A team of 5 developers across 1,506 commits

The project was built within Medialeads, a software company developing products for European Sourcing - the European leader in promotional product databases. The team of 5 developers worked across 3 repositories, with Jose Da Costa as the lead developer responsible for 64.6% of all commits (974 out of 1,506). The team shared documentation through an internal DokuWiki hosted on the staging server.

The collaboration model was branch-based: each developer worked on their own branch (visible in the git history: branches `jose`, `fancyweb`, `Amandine-es`). Wamania played a special role as the architect of the 2016 modernization, being the sole author of both bo.myeasyweb.pro and myeasyweb.pro. Thomas C. (`fancyweb`) was a significant contributor on the main application, while Amandine focused on localization (likely Spanish, given her alias `Amandine-es`).

Commit Distribution by Developer
Team Contribution Breakdown
DeveloperRoleCommits%
Jose Da CostaLead Developer97464.6%
WamaniaSenior Developer / Architect36324.1%
Thomas C.Developer1298.6%
AmandineDeveloper / Localization291.9%
Bastien B.Developer110.7%
Total1,506100%

External Stakeholders

Beyond the core team, the project involved multiple external actors: promotional product suppliers (whose catalogs fed the platform via the European Sourcing API), 40+ resellers (direct users of the MyEasyWeb back-office), OVH (dedicated server hosting), Amazon Web Services (SES email delivery), and GitHub (code hosting under the medialeads organization).

Results & Deliverables

What was achieved over 4+ years of development

For the Platform

Code Volume by Language

Database Entities

67

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

Controllers

57

44 (main) + 13 (BO admin)

API Routes/Endpoints

136

On myeasyweb.net alone

Total Commits

1,506

Across 3 repositories, 5 developers

Visual Themes

3 + common

Fully customizable per reseller

Stat Files

1,355

Supplier statistics files (2012-2015)

Entity Distribution Across Databases
Technical Architecture Metrics
Platform Capabilities

For the Business

MyEasyWeb allowed European Sourcing to retain its network of 40+ 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. The 1,355 supplier statistics files collected between 2012 and 2015 testify to sustained commercial activity driven by the platform.

For Me Personally

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

  • Multi-tenant SaaS architecture - designed and maintained a single codebase serving 40+ independently branded sites, a pattern I've applied to every SaaS project since
  • Full-stack PHP expertise - deep mastery of Symfony 2.x ecosystem (Doctrine, Twig, security, translations, bundles) under real production constraints
  • Search engine integration - hands-on experience with Apache Solr and ElasticSearch for full-text product search across massive catalogs
  • B2B e-commerce domain - deep understanding of catalog management, pricing/margins, quote workflows, supplier data synchronization, and multi-currency handling
  • Database architecture - worked with MySQL master/slave replication, Memcached caching, and cross-application shared databases
  • Technical leadership - coordinated development across 3 repositories with 4 other developers using branch-based workflows, from SVN to Git

What Came After

Evolution and legacy of the platform

Immediate Next Steps (2016)

The last documented activity dates to December 2016 (NAS backup). The project was actively evolving at that point: the new internal back-office (bo.myeasyweb.pro, Symfony 3.1) had just been completed, the showcase site (myeasyweb.pro, Silex 2.0) was freshly deployed, and the migration from SVN to GitHub was complete. The platform was serving 40+ active reseller sites across Europe.

Long-Term Impact

MyEasyWeb was part of a broader ecosystem of 30+ interconnected applications built over nearly a decade at European Sourcing. The multi-tenant architecture patterns, Solr integration approach, and B2B e-commerce domain knowledge developed during this project directly influenced the design of subsequent tools in the European Sourcing ecosystem - including the Extranet (229K lines), the data import engine (120+ tables), and the supplier synchronization platform (Flux).

Current Status

The files analyzed were recovered from a NAS backup made in late 2016. The project very likely continued after this date, but post-backup activity is not accessible from these archives. The platform's architecture - a single PHP codebase serving dozens of custom-branded e-commerce sites - was a mature and proven SaaS model that demonstrates the viability of multi-tenant approaches for B2B niche markets.

Critical Reflection

Honest assessment with the benefit of hindsight

Strengths
  • Multi-tenant architecture: one codebase for 40+ sites with individual customizations - a true SaaS product, not isolated sites
  • Rich feature set: the reseller back-office covered ads, stats, SEO, newsletters, margins, downloads, corporate pages - well beyond a simple CMS
  • Scalable infrastructure: MySQL master/slave replication, Memcached, Solr, Amazon SES - thoughtful scaling choices
  • Native multi-language and multi-currency: 7 languages and 32 currencies built into the data model from day one
  • Separation of concerns: 3 applications with adapted stacks (Symfony 2.4, Symfony 3.1, Silex 2.0) for different use cases
Areas for Improvement
  • Password security: MD5 without salting is a critical vulnerability, even for 2012 (bcrypt was already the recommendation)
  • Test coverage: only 4 test files in bo.myeasyweb.pro, none visible in myeasyweb.net - virtually no automated testing for a project of this scale
  • CSS technical debt: 38,091 lines of CSS suggest accumulation without refactoring, likely from theme multiplication
  • Inter-application coupling: direct access to the shared europeansourcing database creates tight coupling and risky schema migrations
  • Manual deployment: a simple shell script (prod.sh) for production - no CI/CD, no automated tests in the pipeline, no automatic rollback

Key Lessons Learned

  1. Multi-tenancy is a value multiplier: one codebase serving 40+ clients generates far higher ROI than custom builds, provided the customization layer is well-structured
  2. Technical debt grows with success: the more clients and features, the higher the risk of CSS/test/security debt if quality is not measured continuously
  3. The SVN-to-Git migration paid for itself quickly through per-developer branches and collaborative workflows - version control choices have lasting impact
  4. Operational documentation (wiki with URLs, commands, crontabs) is just as critical as architectural documentation for a project's long-term survival

Architecture & Diagrams

System Architecture
Three interconnected applications with shared infrastructure
Multi-Tenant Request Flow
How a visitor request on a reseller domain is processed
Data Model (bo.myeasyweb.pro)
Entity-relationship diagram of the internal administration database
Infrastructure & Deployment
Development, staging, and production environments
Complete Data Model (41 entities - Draw.io)
Full entity map of myeasyweb.net BackBundle organized by domain: Core, Catalog, Advertising, Content, Statistics

Related journey

Professional experience linked to this achievement

Skills applied

Technical and soft skills applied

Image gallery

Project screenshots and visuals

MyEasyWeb administration dashboard showing reseller management, orders and statistics overview
Internal back-office (bo.myeasyweb.pro) - Reseller administration dashboard
Reseller login and registration page with branded customization options
Reseller authentication portal - Branded login with custom domains
White-label customization panel with theme, color, logo and font settings for reseller sites
Customization panel - Full visual identity control per reseller site
Product catalog storefront with search filters, category navigation and promotional product listings
Storefront catalog - Multi-language product search with supplier filtering
Marketing brochure for MyEasyWeb white-label SaaS e-commerce platform with feature highlights
Commercial brochure - Platform features and value proposition for resellers