Full-Stack Commercial E-Commerce

GMH-SARL

Plateforme E-Commerce Haute PerformanceHigh-Performance E-Commerce Platform

Plateforme e-commerce complète développée pour GENERAL MARKET & HEALTHCARE ENTERPRISE SARL (Cameroun/Côte d'Ivoire), fournisseur de solutions IT & Healthcare. Performance testée et prouvée avec 8 tests complets et des métriques réelles. Complete e-commerce platform developed for GENERAL MARKET & HEALTHCARE ENTERPRISE SARL (Cameroon/Ivory Coast), an IT & Healthcare solutions provider. Performance tested and proven with 8 complete test suites and real-world metrics.

2024
GMH SARL
Cameroun / Côte d'IvoireCameroon / Ivory Coast
GMH-SARL Homepage
En 30 secondes
ContexteContext Plateforme e-commerce pour GMH SARL (IT & Healthcare, Cameroun / Côte d'Ivoire) — refonte d'une présence en ligne avec catalogue, panier et espace client.E-commerce platform for GMH SARL (IT & Healthcare, Cameroon / Ivory Coast) — rebuilding an online presence with catalog, cart and customer area.
Mon rôle & défiMy role & challenge Développeur full-stack solo : concevoir une stack PHP 8 / MySQL sécurisée et tenant la charge sans framework lourd, avec tests de performance reproductibles.Solo full-stack developer: design a secure PHP 8 / MySQL stack able to handle load without a heavy framework, with reproducible performance tests.
Résultat mesurableMeasurable outcome 6,84 ms de réponse moyenne, 500 requêtes concurrentes absorbées, et A / A / A sur SonarQube (couverture 90,2 %).6.84 ms average response time, 500 concurrent requests absorbed, and A / A / A on SonarQube (90.2% coverage).

Problème → Solution → Impact

Le problème clientThe client problem

GMH SARL (IT & Healthcare) opérait avec une présence en ligne minimale : catalogue disséminé entre brochures et appels, aucun canal de commande structuré.GMH SARL (IT & Healthcare) was operating with minimal online presence: catalog scattered between brochures and phone calls, with no structured ordering channel.

Contraintes : budget serré (pas de SaaS payant), hébergement mutualisé PHP/MySQL, et nécessité de tenir une charge variable sans équipe ops dédiée.Constraints: tight budget (no paid SaaS), shared PHP/MySQL hosting, and the need to handle variable load without a dedicated ops team.

Ma solutionMy solution

Stack PHP 8 + MySQL en architecture MVC-lite, sessions sécurisées, requêtes préparées PDO, panier persistant, et tests de charge reproductibles (Apache Bench).PHP 8 + MySQL stack on MVC-lite architecture, secure sessions, prepared PDO statements, persistent cart, and reproducible load tests (Apache Bench).

Rejeté :Rejected: WordPress / WooCommerce (dette de plugins & surface d'attaque), Laravel (overhead trop lourd pour le besoin réel).WordPress / WooCommerce (plugin debt & attack surface), Laravel (overhead too heavy for the actual need).

Impact concretConcrete impact

Catalogue centralisé et commandes en ligne fonctionnelles, 500 requêtes concurrentes absorbées à 6,84 ms de moyenne.Centralized catalog and functional online orders, 500 concurrent requests absorbed at 6.84 ms average.

Audit indépendant SonarQube : A / A / A (0 issue sécurité), 90,2 % de couverture de tests, 0 hotspot.Independent SonarQube audit: A / A / A (0 security issues), 90.2% test coverage, 0 hotspots.

6,84 ms6.84 ms
Temps de réponseResponse time
500
Requêtes concurrentes testéesConcurrent requests tested
100%
Taux de succèsSuccess rate
138.8
Requêtes/secondeRequests/second
850
Lignes de code PHP (SonarQube)PHP lines of code (SonarQube)
A / A / A
SonarQube (Sécurité / Fiabilité / Maintenabilité)SonarQube (Security / Reliability / Maintainability)

Performance & Métriques

Tests réalisés le 18 Avril 2026 • PHP 8.2.12 • MySQL • 10 échantillons/testTests run on April 18, 2026 • PHP 8.2.12 • MySQL • 10 samples/test

Temps de Chargement des PagesPage Load Times

Page MoyenneAverage Min Max Status
AccueilHome 4.8ms 4.19ms 5.69ms ✅ Excellent
ProduitsProducts 7.73ms 5.47ms 20.93ms ✅ Bon✅ Good
Login 3.79ms 3.09ms 4.57ms ✅ Super rapide✅ Very fast
InscriptionSign up 4.19ms 3.37ms 5.42ms ✅ Excellent
Services 9.32ms 4.6ms 26.35ms ✅ Bon✅ Good
MOYENNEAVERAGE 6.84ms ⭐ 3.99ms 51.82ms 80/80 ✅

Charge ConcurrenteConcurrent Load

ConcurrenceConcurrency DuréeDuration Avg Response Req/s Status
5 requêtes5 requests 0.03s 6.77ms 147.6 5/5 ✅
10 requêtes10 requests 0.06s 5.94ms 168.2 10/10 ✅
50 requêtes50 requests 0.53s 10.58ms 94.5 50/50 ✅
100 requêtes100 requests 0.72s 7.2ms 138.8 100/100 ✅

Stress Test (Breaking Point)

NiveauLevel RequêtesRequests Avg Response Req/s Status
Niveau 1Level 1 50 5.38ms 185.7 Stable ✅
Niveau 2Level 2 200 6.27ms 159.3 Stable ✅
Niveau 3Level 3 300 6.49ms 153.9 Stable ✅
Niveau MAXMAX Level 500 6.55ms 152.7 500/500 ✅
Conclusion : Pas de breaking point détecté jusqu'à 500 requêtes concurrentes. Capacité mesurée : 500+ requêtes concurrentes absorbées sans dégradationConclusion: No breaking point detected up to 500 concurrent requests. Measured capacity: 500+ concurrent requests absorbed without degradation

Analyse de Sécurité

Password Hashing

Bcrypt implémenté (cost 12)Bcrypt implemented (cost 12)

✅ Sécurisé✅ Secure

SQL Injection

Prepared statements implémentésPrepared statements implemented

✅ Corrigé✅ Fixed

Session Management

Regenerate, IP verify, timeout 30minRegenerate, IP verify, 30-min timeout

✅ Sécurisé✅ Secure

CSRF Protection

Token system avec 1h expirationToken system with 1-hour expiration

✅ Corrigé✅ Fixed

Rate Limiting

5 tentatives par 15 min par IP5 attempts per 15 min per IP

✅ Corrigé✅ Fixed

Input Validation

Email, password, phone formatsEmail, password, phone formats

✅ Sécurisé✅ Secure
24 Tests unitairesUnit tests
100% Pass rate
16 Tests sécuritéSecurity tests
8 Tests validationValidation tests

Stack Technique

Backend

PHP 8.2
MySQL 5.7+
Apache
Bcrypt

Frontend

HTML5
CSS3
JavaScript
Bootstrap 4
jQuery 3.7.1

Testing & DevOps

PHPUnit
Load Testing
Git
XAMPP

Qualité du Code — Audit SonarQube

Analyse statique réalisée avec SonarQube Community • 850 LOC PHP analysées • Quality Gate PassedStatic analysis with SonarQube Community • 850 PHP LOC analyzed • Quality Gate Passed
A

Security

0 issue ouverte0 open issues

A

Reliability

0 bug détecté0 bugs detected

A

Maintainability

153 code smells (A grade)

90,2%

Test Coverage

Couverture mesuréeMeasured coverage

0,0%

Duplications

Sur 10k lignes analyséesAcross 10k analyzed lines

0

Security Hotspots

Aucun point à auditerNo items to audit

24 Fichiers PHPPHP files
850 LOC PHP (SonarQube)PHP LOC (SonarQube)
8 Endpoints APIAPI endpoints
8 Pages publiquesPublic pages

Optimisation des Ressources

-60%
Potentiel de compression avec GzipGzip compression potential
15,244 KB → 6,098 KB (économie de 9,147 KB)15,244 KB → 6,098 KB (9,147 KB saved)

CSS

224 KB 90 KB
-60%

JavaScript

173 KB 69 KB
-60%

Images (71)

14,847 KB 7,424 KB
-50%

Fonctionnalités E-CommerceE-Commerce Features

Catalogue ProduitsProduct Catalog

1000+ produits, filtrage par catégorie, recherche1000+ products, category filtering, search

Panier PersistantPersistent Cart

LocalStorage, mise à jour temps réelLocalStorage, real-time updates

AuthentificationAuthentication

Login/Register sécurisé, sessions PHPSecure login/register, PHP sessions

Processus CommandeOrder Process

Checkout complet, confirmation emailFull checkout, email confirmation

Espace ClientCustomer Area

Historique achats, gestion profilPurchase history, profile management

Responsive Design

Desktop, tablette, mobileDesktop, tablet, mobile

Galerie ProduitsProduct Gallery

Zoom, navigation, 71 images

Formulaire ContactContact Form

Validation, envoi emailValidation, email sending

Performance TestéeTested Performance

8 tests complets, métriques réelles8 complete tests, real metrics

Capacité & ScalabilitéCapacity & Scalability

Capacités dérivées des tests de charge ci-dessus (Stress Test — Breaking Point non atteint à 500 requêtes concurrentes)Capacity derived from the load tests above (Stress Test — Breaking Point not reached at 500 concurrent requests)
500
Requêtes concurrentesConcurrent requests
Testées sans dégradation (500/500 ✓)Tested without degradation (500/500 ✓)
152,7152.7
Req/s pic mesuréPeak Req/s measured
Sur charge concurrente de 500At 500 concurrent load
1 000+
Produits catalogueCatalog products
Requêtes <10 ms mesuréesRequests <10 ms measured
6,84 ms6.84 ms
Temps de réponse moyenAverage response time
80 mesures, écart 3,99–51,82 ms80 measurements, range 3.99–51.82 ms

Discutons de votre projet

Vous avez un projet similaire ? Je serais ravi d'en discuter.