
Software Engineer · PHP Zend Framework Developer
European Sourcing Group







European Sourcing Group is a family-owned company founded by Bernard and Christine Lavigne, operating Europe's largest promotional product and textile database. Based initially in Begles then Pessac (Avenue de Canteranne), the company operates in an agile SME environment connecting suppliers and distributors across the European promotional market. The group also includes Medialeads, its technology arm, and distributes product data through multiple B2B and B2C platforms. Hosting is provided by OVH.
520 000+
Products
3 670 000+
Variations
20 700+
Resellers
71 000+
Clients
800+
Suppliers
1 800+
Brands
2 000+
MySQL Databases
7
Languages
35
Employees
The European Sourcing platform is a complete ecosystem composed of several interconnected components: a front office (public product catalog), a back office (internal administration), a supplier extranet (product and asset upload), an online quote and brief system, customizable mini-sites for each reseller, and multi-language content management. The entire system relies on over 2,000 pre-computed MySQL databases to optimize product search performance.
Front Office
Public product catalog
Back Office
Internal administration
Supplier Extranet
Product & asset upload
Quotes & Briefs
Online system
Mini-sites
Customizable per reseller
Multi-language
7-language content management
9.1M
Lines of Code
7 510+
PHP Files
4 510+
JS Files
910+
Controllers
2 220+
Views / Templates
Within a team of 5 to 6 developers, I was positioned as a PHP Zend Framework developer with a broad scope. My work covered both web platform development (search portal, extranets, site generator) and Linux server administration.
I worked in direct collaboration with sales teams, suppliers, design and technical management, giving me a cross-functional product vision.
The SME environment granted me significant autonomy: from design to production deployment, including database modeling and authoring all project documentation. At the time, we used SVN (Subversion) for version control and managed multiple environments (development, staging, production).
- Designed and developed product search engines using Apache Solr and MySQL, indexing Europe's largest promotional product database
- Developed custom ERP and PIM extranets with supplier feed integration via MyEasyImport and reconciliation of heterogeneous formats
- Built the MyEasyWeb e-commerce site generator using Zend Framework 1.7 and the SQLi MVC framework
- Software architecture based on the MVC pattern, object-oriented design and design patterns (Factory, Singleton, Observer, Strategy) applied to the Zend framework
- Database modeling with MySQL Workbench (.mwb): relational schema design, index optimization, management of over 2,000 distinct MySQL databases
- Server virtualization setup with Proxmox VE and OpenVZ, enabling environment isolation and production container management
- Managed Linux server infrastructure (Debian/Ubuntu): Apache configuration, iptables security, deployment, backups. Hosting at Systonic then migration to OVH
- Implemented SEM/SEO strategies to maximize platform visibility on search engines
- Developed automatic product classification tools (colors, text, categories) powered by Machine Learning and NLP - an approach ahead of its time
- Created multilingual translation tools (7 languages) with .po and .mo file management via a dedicated back-office
- Designed secure REST APIs for product data synchronization with external partners
- Authored all project documentation: technical proposals, requirements documents, functional and technical specifications, acceptance test plans, requirements traceability, deployment guides and operational procedures
- Index and make accessible Europe's largest promotional product database through high-performance search engines
- Automate the import and reconciliation of product feeds from dozens of suppliers with heterogeneous formats
- Enable resellers to create their online store in a few clicks via MyEasyWeb
- Guarantee availability and performance of an infrastructure managing over 2,000 MySQL databases
Main Projects
B2B promotional product search portal for European resellers. Apache Solr search engine indexing hundreds of thousands of products with advanced faceting (categories, prices, colors, brands). Search interface optimized for product discovery and quote generation.
B2C promotional product marketplace for end customers. The platform connects buyers directly with partner resellers, handling catalog management, orders and commercial matchmaking.
Turnkey e-commerce site generator for promotional product resellers. Each reseller could quickly create their own customized online store connected to the central product catalog. Built with Zend Framework 1.7 and the SQLi MVC framework.
Custom ERP and PIM extranet for centralized management of products, suppliers, orders, stock, clients and resellers. Full back-office with a sophisticated import system (MyEasyImport) capable of reconciling feeds from dozens of suppliers with different formats.
Community portal dedicated to professional trade shows in the promotional products industry. Platform connecting exhibitors, visitors and organizers, with event management, booth allocation and scheduling.
Deployment and customization of numerous B2C online stores using PrestaShop for promotional product resellers, along with showcase and corporate websites built on WordPress. Each store is connected to the central product catalog.
B2C online store for promotional product resellers wanting to sell directly to end customers. Product catalog connected to the central system with order management and logistics.
MyEasyWeb was a white-label SaaS e-commerce site generator, well before solutions like Shopify or Wix popularized the concept. Each promotional product reseller could, in just a few clicks, select their suppliers, pick from their product catalogs, and instantly generate their own customized online store - with zero technical skills required.
What made MyEasyWeb unique:
- Supplier and catalog selection in "drag & pick" mode: the reseller checked their desired suppliers and products automatically appeared in their store
- Full CMS customization: colors, logos, layout, fonts, header images, corporate pages - everything was configurable by the reseller through an intuitive back-office
- Advanced theming system built with jQuery selectors and dynamic CSS - a major technical challenge at the time, well before CSS custom properties and design tokens
- Multi-tenant architecture: a single Symfony codebase served 40+ sites, each with its own domain name, branding and supplier selection
- 7 languages, 32 currencies (ECB rates), per-reseller margin management, built-in advertising system (sliders, banners), online quotes, automated SEO
108K
Lines of Code
40+
Reseller Sites
200K+
Catalog Products
1 506
Commits
This project represented a considerable effort and a rare level of technical complexity for the time. The real-time visual customization system, built entirely with jQuery selectors, was a front-end engineering feat well before the advent of modern frameworks.
Beyond the code, the real challenge at European Sourcing was modeling and implementing business rules of rare complexity for an SME. Every system feature had to handle dozens of edge cases tied to the multi-country B2B business model. Here are just a few examples among many others:
- Up to 50+ degressive price tiers per product (fixed, variable, reduced) with dynamic calculation formulas
- Completely different prices per connection country: the same product displayed distinct rates for French, German or Spanish resellers - HQ/subsidiary system per supplier (Mid Ocean Brands: 10 entities, Plastoria: 4 countries, BIC Graphic: per-country variants)
- Per-reseller margin management: each connected reseller applied their own coefficients on supplier prices, with 32 currencies and automatic ECB rates
- Products with thousands of variants: colors, sizes, materials, sleeve lengths (T-shirts), glue types, weights - some products exceeded 15,000 possible combinations
- 32+ fields per product/variant record with separate color, size and material tables - each variant carrying its own prices, stock and images
- 36 fields per marking option: technique (screen printing, embroidery, engraving, printing...), position on product, dimensions, number of colors/logos, base price, miscellaneous fees (proof, shipping, packaging)
- Cascading packaging calculations: pieces per box, boxes per carton, cartons per pallet - with different rules per supplier, per product and per variant
- Variable fees per supplier: proof charges, shipping, packaging, plate fees - each supplier imposing their own rate grids and commercial conditions
- 37 distinct supplier connectors (FTP, HTTP, REST API) with heterogeneous formats reconciled daily - each supplier potentially having multiple European subsidiaries with specific catalogs and rates
- Cartesian product calculation of all available variants (color x size x material x sleeve x weight) to dynamically generate and display in the UI every possible combination - some products reached 15,000+ combinations
- Each combination carried its own degressive prices, stock, images, marking options and fees - all pre-calculated in batch and stored in denormalized tables to maintain acceptable response times
This business complexity forged a modeling rigor and software architecture discipline that became permanent reflexes. Translating such an intricate business model into maintainable, performant and reliable code - across 2,000+ MySQL databases - was a daily engineering challenge.
The product search engine went through four successive technology generations, each addressing the limits of the previous one as the catalog grew and performance requirements increased.
Initial search based on SQL LIKE and FULLTEXT queries against MySQL product tables. Functional for a few thousand references, but response times degraded rapidly as the catalog grew. No faceting, no typo tolerance, relevance limited to exact matching.
Migration to PostgreSQL and its native full-text search engine (tsvector / tsquery). Added stemming, field-level weighting (title, description, brand) and boolean operators. A noticeable relevance improvement, but faceting performance across hundreds of thousands of products remained insufficient.
Adoption of Apache Solr as a dedicated search engine. Indexing of hundreds of thousands of products with advanced faceting (categories, colors, prices, suppliers), search suggestions, spell checking and custom relevance scoring. This generation enabled the platform to scale across the European market.
Evolution to Elasticsearch for its horizontal scalability, native REST API and real-time analytics capabilities. Implementation of multi-language search (7 languages), dedicated linguistic analyzers, business synonyms and complex aggregations for dynamic catalog filtering.
Languages & Frameworks
Databases & Search
Servers & Virtualization
Tools & Modeling
Network & Security
Services
The European Sourcing infrastructure represented a colossal data volume for an SME: over 2,000 distinct MySQL databases, hundreds of thousands of product records, millions of data rows spread across dozens of interconnected tables. Each database was pre-computed to serve real-time search queries.
At this scale, the slightest design error was fatal. A missing index on a 500,000-row table could turn a 50ms query into a 30-second timeout. We spent hours on EXPLAIN ANALYZE, studying every execution plan, every full table scan, every filesort. Normal forms (1NF, 2NF, 3NF, BCNF) were not an academic topic - they were a daily necessity to avoid redundancy and update anomalies on such large volumes.
Optimization was constant: composite indexing strategies, pre-computed join tables, targeted denormalization for the most critical queries, table partitioning, MySQL parameter tuning (buffer pool, query cache, sort buffer, join buffer). Stock, price and promotion recalculation batches ran several hours every night - every second saved per query multiplied across millions of executions.
This context required complete mastery of design patterns (Factory, Singleton, Observer, Strategy, Repository), SOLID principles, UML modeling and object-oriented design applied to the Zend framework. No shortcuts were possible when every architectural decision directly impacted production performance.
All of this in an SME environment that gave me complete freedom over technical decisions and end-to-end ownership: from database modeling to Linux server administration, from application code to SQL query tuning. This total autonomy, on a system at this scale, was the most formative experience of my career.
Before the CI/CD era, our deployment chain relied on SVN and Bash scripts. The workflow was: SVN commit (subversion.europeansourcing.com) -> deployment script (.sh) -> SVN export to /var/www/esv3 -> Apache serves production. Each developer (jose, vincent, mathieu, fabien, thomas) committed to the central repository, and deployment scripts automated the export and go-live process.
In a competitive, private ecosystem like the promotional products industry, imposing a standardized exchange format between suppliers and resellers is a major challenge. Each supplier has its own catalog format (CSV, XML, proprietary databases), its own naming conventions and its own business rules.
We dedicated considerable work to designing a standardized supplier export and reseller import format. The goal was to create a common standard allowing every actor in the chain to transmit and receive product data uniformly - references, descriptions, prices, visuals, stock levels.
Despite our efforts, we never managed to impose this standardization format. The dominant position of certain suppliers, who had no interest in adapting their exports, made adoption impossible. The pivot was to build a dedicated back-office (supplier extranet) allowing each supplier to upload their products and assets in their own format, with a platform-side standardized API system to reconcile and normalize data internally.
This experience taught me that in a private market, standardization cannot be imposed by a single actor - it must be driven collectively or worked around with smart adaptation solutions.
European Sourcing was my true trial by fire as a developer.
The family SME environment gave me autonomy and responsibility I would never have had in a large organization. Every developer had direct impact on the product.
I discovered the power of a well-designed search engine to connect suppliers and distributors, and the complexity of managing over 2,000 MySQL databases in parallel.
Multi-hour batch runs to recalculate stock, prices and promotions taught me patience and the rigor of large-scale optimization.
Working closely with sales teams and suppliers also gave me an end-to-end product vision, far beyond just writing code.
17 Technical Skill · 7 Soft Skill
Technical Skill
Fullstack PHP Zend Framework development of B2B platforms, ERP/PIM extranets, and the MyEasyWeb e-commerce site builder.
Architecture of an ecosystem of 15+ interconnected sub-applications for promotional product sourcing.
SVN deployments with Bash scripts, managing dev/staging/production environments on Linux servers.
Managing 2,000+ MySQL databases, modeling with MySQL Workbench, index optimization and batch computations.
Setting up Proxmox VE and OpenVZ for production server virtualization.
Bash deployment scripts, PHP batch jobs for stock, pricing, and promotion recalculation.
Server network configuration, hosting management at Systonic then migration to OVH.
iptables hardening, Apache configuration, Linux server access management.
Linux server administration (Debian/Ubuntu), Apache configuration, backups.
SVN-to-production deployments, release procedures, regular backups.
Monitoring Solr search engine and batch computation performance.
Zend Framework MVC pattern, design patterns (Factory, Singleton, Observer, Strategy).
Applying GoF design patterns in the Zend Framework context.
UML modeling for platform design, class and sequence diagrams.
REST API design for product data synchronization with external partners.
Web application security hardening, protection against SQL injection and XSS.
Technology watch on PHP, Zend Framework, search engines, and virtualization.
Soft Skill
Coordinating technical deliverables, task tracking within a team of 5-6 developers.
Solving performance issues across 2,000+ MySQL databases and Solr search engines.
Direct collaboration with sales teams, suppliers, design, and technical management.
Self-directed learning of Zend Framework, Apache Solr, and Proxmox virtualization.
Interface with promotional product suppliers and reseller partners.
Writing complete technical specifications, requirements documents, acceptance test plans, and deployment guides.
User support and training on internal tools and extranets.
European Sourcing - B2B Ecosystem
Ecosystem of 15+ interconnected sub-applications for promotional product sourcing
Extranet - B2B Catalog Administration Platform
Custom ERP/PIM extranet for product, supplier and order management
EuropeanTool - B2B Platform
Platform of 30+ interconnected applications, 250+ suppliers, 50+ resellers
Promotional Products Search Engine
Vertical search engine with Apache Solr, 22,000+ words indexed
Trade Show Community Portal
WordPress portals for industry trade shows, 35+ sites