Contact
Let's work together
EuropeanTool - B2B Promotional Product Platform

EuropeanTool - B2B Promotional Product Platform

Ecosystem of 30+ interconnected applications automating the entire B2B promotional product supply chain - from supplier catalog import to reseller e-commerce distribution across 7 European languages.

2009 - 2016
~7 years
Software Engineer then Senior Software Engineer
PHP 5.xMySQLmynd-frameworkZend Framework 1Symfony 2.xPrestaShop 1.4/1.5Bootstrap 2jQueryExtJSPhoneGap/CordovaApacheSVNGitDockerOVH Dedicated

Lines of PHP Code

13,843

Export platform alone

Sub-projects

30+

Interconnected applications

Connected Suppliers

250+

European manufacturers

Supported Languages

7

European languages

Presentation

Project definition and scope

EuropeanTool is the internal name for the digital tools and services platform developed for European Sourcing, a B2B company specialized in promotional products across Europe. This project is not a single application but a complete ecosystem of 30+ interconnected applications covering the entire value chain: product catalog management, data export to reseller e-commerce stores, automated supplier flows, supplier backoffice, translation, statistics, product search, mobile applications, and turnkey e-commerce site creation for resellers.

European Sourcing acts as a B2B intermediary connecting hundreds of European promotional product suppliers with thousands of resellers. The EuropeanTool platform was designed to automate and industrialize this matching process: centralize supplier catalogs, normalize them, translate them into 7 languages, then redistribute them en masse to reseller e-commerce stores.

Business Domain

Promotional products and corporate gifts - B2B European sourcing (goodies, branded merchandise, personalized items)

Target Users

B2B resellers (distributors importing catalogs to their PrestaShop stores or using turnkey MyEasyWeb sites), European suppliers (manufacturers feeding catalogs via extranet or automated flows), and the internal European Sourcing team

Functional Scope
Product Catalog (7 languages)
CSV & WebService Export
PrestaShop B2B Modules
Automated Supplier Flows
Supplier Backoffice
MyEasyWeb Turnkey Sites
Translation Platform
Product Search Engine
Statistics & Analytics
Platform Architecture
EuropeanTool ecosystem architecture - from suppliers to resellers

Objectives, Context, Stakes & Risks

Strategic vision and constraints

Objectives
  • Centralize and normalize catalogs from 250+ European suppliers into a single multilingual database
  • Automate catalog redistribution to reseller e-commerce stores (CSV and PrestaShop WebService)
  • Provide turnkey e-commerce sites (MyEasyWeb) for resellers without their own stores
  • Automate supplier data import flows (prices, stock, docs, markings)
  • Deliver a complete internal toolset for catalog management, translation, and analytics
Context

The project was built progressively since 2009, starting from procedural PHP tools and a custom framework (mynd-framework), evolving toward more modern architectures (Zend Framework 1, then Symfony 2.x for newer sub-projects). Infrastructure was hosted on dedicated OVH servers.

The technical team was small (dominated by a principal developer) with contributors including Thomas C. (backend/mobile), ED (PrestaShop modules), and several others for specialized tasks. The project operated in a multilingual environment (7 European languages), a multi-tenant architecture (each reseller has their own site/export), and managed significant data volumes (15 GB database, hundreds of suppliers, thousands of products).

Business Stakes

Recurring Revenue

The platform is the core of European Sourcing's business. Each connected reseller generates a recurring subscription. Catalog synchronization quality directly impacts customer satisfaction and retention.

European Positioning

European Sourcing is positioned as a pan-European actor (FR, EN, DE, IT, ES, NL, PT), requiring robust translation and localization infrastructure.

Competitive Advantage

The automation of flows (supplier import → normalization → reseller export) is the primary competitive differentiator. Processing hundreds of suppliers and pushing data near real-time to thousands of PrestaShop stores.

Identified Risks

PrestaShop Dependency

Ecosystem tightly coupled to PrestaShop (modules, WebService API, CSV import formats). A major PrestaShop evolution or reseller migration to Shopify/WooCommerce would require significant adaptation.

Technical Debt

Custom framework (mynd-framework) unmaintained, Zend Framework 1 end-of-life, MD5 password hashing without salt, obsolete jQuery/Bootstrap 2.

Bus Factor Risk

The developer "jose" authored ~72% of all SVN files. Losing this expertise would represent a major risk for the entire ecosystem.

Security Vulnerabilities

MD5 password hashing without salt, no visible CSRF protection, no rate limiting identified, credentials present in source code.

The Steps - What I Did

Chronological phases and personal contributions

Sub-project Growth Over Time
Project Gantt
Project phases from 2009 to 2019
Phase 1
Foundations
2009 - 2012
  • Built first internal tools: catalog manager v1 with Open Flash Chart
  • Developed supplier statistics module for data analysis
  • Created advertising banner management system (Zend Framework 1 + ExtJS)
  • Built web crawler to analyze distributor websites
  • Developed product color analysis tool using GD/ImageMagick
Phase 2
B2B E-commerce
2012 - 2014
  • Developed 5 custom PrestaShop modules transforming standard stores into B2B quote platforms
  • Built prestaprice: bulk import of specific prices via CSV
  • Created prestaquote: visual cart → quote transformation via JavaScript
  • Implemented prestaquotepayment: fictitious payment method "Quote pending"
  • Deployed rapidly for resellers with B2B-adapted workflow (no online payment, quantity-based pricing)
Phase 3
Export Industrialization
2013 - 2016
  • Architected the export platform (export.europeansourcing.com) on custom mynd-framework
  • Implemented dual export modes: CSV/ZIP download and PrestaShop WebService push
  • Built queue system with quotas and concurrency management (max 6 simultaneous exports, 3 per IP)
  • Developed zombie process detection and automatic cleanup
  • Created 5 CLI scripts for cron-based automated export execution
Phase 4
Automated Supplier Flows
2015 - 2019
  • Developed automated flow system (flux v1 then v2) for continuous catalog import
  • Transitioned from manual updates to automated cron-based imports
  • Built supplier data validation and normalization pipelines
  • Managed 250+ supplier integrations with varying data formats
Phase 5
Modernization & Migration
2016 - 2019
  • Led progressive SVN to Git migration (31 repositories on GitHub/medialeads)
  • Adopted Symfony 2.x for newer projects (omyague, extranet_rebirth, sourcing_rebirth)
  • Refactored extranet (v1 → v2) with advanced CSV import system
  • Introduced Docker for staging environment
  • Conducted comprehensive archival campaign (441 screenshots, full SQL dumps, complete backup)
Technology Stack Évolution

Actors & Interactions

Team dynamics and stakeholder collaboration

Team & Contributions

The project was developed by a small technical team over 10 years. SVN metadata analysis reveals the actual contribution distribution across the entire ecosystem. These figures represent the number of files where each person is the last author (last changed author) in the SVN working copies backed up in August 2019.

ContributorFilesKey Projects
Jose DA COSTA (jose)32,755+ (~72%)Site, Manager, Export, Crawler, MyGlobal, Translation
Thomas C. (thomas)2,973+ (~6.5%)WebService, Mobile apps, Statistics
ED5 modulesPrestaShop B2B modules (~2,000 lines PHP)
Vincent120 (~0.3%)RecherchePublicitaire, MySQL DBA
Steve62 (~0.1%)Translation platform
Wamania57 (~0.1%)MyGlobal, GraphicSourcing
Fabien~49 (~0.1%)SEO links system (es_links)

Methodological note: These figures reflect the state of SVN working copies at the time of backup (August 2019). The SVN `changed_author` indicates the last person to modify each file, not the original creator. However, over an ecosystem of this size, the figures faithfully reflect the actual distribution of development effort.

External Stakeholders

250+ Suppliers

Midocean, Sol's, Senator, Xindao, Bic Graphic, Fruit of the Loom, Victorinox, Clipper...

50+ Resellers

Promotional product distributors (avotrimage.fr, cadonor.fr, ghkconseil.fr...)

OVH

Dedicated server hosting provider

Dolead

Google AdWords campaign management agency

PrestaShop

Target e-commerce CMS for exports and modules

Working Mode

No formal Agile/Scrum methodology identified. The working mode appears to be iterative development driven by business needs, with a principal developer operating autonomously. Communication with stakeholders (suppliers, resellers, marketing team) was direct and continuous, adapting priorities to market demands and client feedback.

Results - For Me, For the Company

Concrete outcomes and measurable impact

Codebase Metrics
Ecosystem Distribution
Database Structure
Data Model (Core Tables)
Core entity-relationship diagram of the europeansourcing database
Results For Me

Technical Skills Acquired

  • Advanced PHP development (OOP, MVC, custom and standard frameworks)
  • Multi-application ecosystem architecture design
  • API integration (PrestaShop WebService, OVH API)
  • Custom PrestaShop module development
  • MySQL database management (complex schemas, 15 GB dumps, optimization)
  • Hybrid mobile development (PhoneGap/Cordova)
  • Automation (CLI scripts, cron jobs, web crawlers)
  • Image processing (GD, ImageMagick)
  • Linux/Apache/OVH system administration
  • Technical SEO (automated link building, meta tags)
  • Internationalization (i18n) and multilingual translation workflows

Domain & Soft Skills

  • Deep understanding of B2B promotional product industry
  • Distributed software architecture design
  • Autonomous technical project management over 10 years
  • Stakeholder communication (suppliers, resellers, marketing team)
  • Technical documentation (exhaustive screenshot campaigns, CSV import documentation)
Results For the Company

250+

Suppliers Connected

European manufacturers integrated

50+

Reseller Stores

Automated catalog delivery

15 GB

Database Size

Years of accumulated catalog data

7

Languages

Pan-European coverage

Key deliverables:

  • Export platform: CSV multi-language export (7 languages) with images in ZIP archives + WebService push to PrestaShop stores
  • 5 PrestaShop B2B modules: Complete transformation of standard e-commerce into B2B quote platforms
  • Turnkey sites (MyEasyWeb): White-label e-commerce sites for resellers without their own stores
  • Internal tools: Banner management, web crawler, color analysis, flyer generator, link exchange, translation platform
  • Automated supplier flows: Continuous catalog import from 250+ suppliers
  • Mobile application: Hybrid iPhone/web app for product search (PhoneGap)
  • Administration backoffice: Complete catalog management (v1 + v2) with advanced CSV import

Project Aftermath

What happened next

Immediate future: In August 2019, a comprehensive archival campaign was conducted - 441 screenshots of all applications, full SQL dumps (15 GB), and complete backup of all projects onto a NAS Synology. This suggests a significant transition phase (departure of a key team member, acquisition, or end of mission).

Medium-term evolution: The platform continued operating after the archival. The last known developments show a clear modernization trajectory - migration from SVN to Git, adoption of Symfony 2.x for new projects, introduction of Docker for staging. This trajectory was never fully completed, leaving a hybrid state between legacy (mynd-framework, ZF1) and modern (Symfony, Docker) approaches.

Today (2026): The EuropeanTool ecosystem represents a 10-year body of work preserved in its entirety on a NAS backup. The 441 screenshots provide a visual time capsule of every application's state in August 2019. The complete SQL dumps allow for full data reconstruction. While the technology stack has become dated (PHP 5.x, jQuery, Bootstrap 2), the architectural patterns - automated B2B data flows, multi-tenant export systems, multilingual catalog management - remain relevant design concepts that I carry forward into modern projects.

The project's legacy is visible in my current approach to architecture: the emphasis on automation, multi-tenant thinking, and internationalization-first design that I now implement with modern stacks (Next.js, TypeScript, PostgreSQL) was directly shaped by these 10 years of building EuropeanTool.

Critical Reflection

Honest retrospective analysis

What Worked Well
  • Exceptional functional coverage

    The ecosystem covered the entire B2B value chain - from supplier import to reseller store - with translation, statistics, and marketing. Remarkable achievement for a small team.

  • Advanced automation

    WebService exports with queue management, quotas, zombie detection, and notifications represent advanced engineering for internal tooling.

  • Pragmatic multi-tenant approach

    PrestaShop modules intelligently transformed standard stores into B2B platforms via DOM manipulation JavaScript, avoiding full CMS forking.

  • Native internationalization

    Support for 7 European languages was integrated from the data model design, not added as an afterthought.

  • Visual documentation

    441 screenshots constitute a precious documentary heritage, enabling understanding of all applications' state in 2019.

What Could Have Been Better
  • Obsolete authentication

    MD5 without salt for password hashing was a critical vulnerability. Bcrypt or Argon2 should have been adopted.

  • Custom framework

    While functional, mynd-framework created maintenance and documentation debt and made recruitment harder. The Symfony adoption (started in later projects) was the right direction.

  • No automated tests

    Despite SimpleTest being available in the framework, no functional test files were found in application code.

  • Tight PrestaShop coupling

    Export format, modules, and WebService API were specific to PrestaShop 1.4/1.5, making adaptation to other CMS costly.

  • No CI/CD pipeline

    Deployment was apparently manual, with no continuous integration pipeline or automated testing.

What I Would Do Differently
  • Adopt a standard framework (Symfony, Laravel) from the start instead of creating mynd-framework, to ease maintenance and recruitment
  • Build a unified REST API rather than direct database connections from each sub-project
  • Introduce automated tests (unit and integration) to secure evolutions, especially on business-critical exports
  • Containerize the entire ecosystem with Docker from the start for easier deployment and environment reproducibility
  • Abstract the export layer to support other CMS (WooCommerce, Shopify) alongside PrestaShop
Lasting Lessons

Automation is a force multiplier

A small team can manage a complex B2B ecosystem if repetitive processes (import, export, translation) are fully automated.

Architectures evolve

The transition from SVN to Git, from custom to Symfony, from procedural to MVC illustrates a progressive but realistic technical maturation - you don't rewrite everything at once.

Visual documentation has value

The exhaustive 2019 screenshots enable, 7 years later, exact understanding of application states. A low-cost but highly valuable investment.

Bus factor is a real risk

An ecosystem of 30+ applications primarily maintained by one person is fragile. Competence diversification in the team is essential.

Related journey

Professional experience linked to this achievement

Skills applied

Technical and soft skills applied

Image gallery

Project screenshots and visuals