
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.
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.
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)
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).
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
- 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
- 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
- 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)
- 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)
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`).
| Developer | Role | Commits | % |
|---|---|---|---|
| Jose Da Costa | Lead Developer | 974 | 64.6% |
| Wamania | Senior Developer / Architect | 363 | 24.1% |
| Thomas C. | Developer | 129 | 8.6% |
| Amandine | Developer / Localization | 29 | 1.9% |
| Bastien B. | Developer | 11 | 0.7% |
| Total | 1,506 | 100% | |
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
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)
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
- 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
- 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
- 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
- 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
- The SVN-to-Git migration paid for itself quickly through per-developer branches and collaborative workflows - version control choices have lasting impact
- Operational documentation (wiki with URLs, commands, crontabs) is just as critical as architectural documentation for a project's long-term survival
Architecture & Diagrams
Related journey
Professional experience linked to this achievement
Skills applied
Technical and soft skills applied
Image gallery
Project screenshots and visuals




