📋 Contexte du projet

Pendant mon stage dans une agence web, j’ai été chargé de développer les pages d’accueil de 5 boutiques en ligne thématiques. Chaque boutique cible un public fan d’une licence populaire et nécessitait une identité visuelle unique.

Enjeu

Créer rapidement des pages d’accueil professionnelles qui :

  • 🎯 Captent l’attention immédiatement
  • 🛒 Génèrent des conversions
  • 📱 Fonctionnent sur tous les appareils
  • 🎨 Respectent l’identité de chaque licence

🎯 Objectifs

5 pages d’accueil complètes (~15 sections chacune)
100% responsive (mobile, tablette, desktop)
Chartes graphiques respectées
Performances optimisées (< 3s de chargement)

Boutiques développées

BoutiqueLicenceCouleur principale
🟢 Boutique MinecraftMinecraft#3C8527
🟠 One Piece BoutiqueOne Piece#FF7700
🟡 Dragon Ball BoutiqueDragon Ball#FF8C00
🔵 Boutique SonicSonic#0066CC
🟣 Univers NarutoNaruto#FF6600

🛠️ Technologies utilisées

TechnologieUtilisation
HTML5Structure sémantique
CSS3Flexbox, Grid, Animations
JavaScriptSliders, animations scroll
IA générateurinterne

🏗️ Structure des pages (15 sections)

Chaque page comprend :

  1. Header + Navigation – Logo, menu, panier
  2. Hero Section – Bannière principale + CTA
  3. Produits Phares – Best-sellers
  4. Catégories – Navigation par type
  5. Nouveautés – Slider/Carousel
  6. Bannière Promo – Offre spéciale
  7. Avantages – Livraison, qualité, SAV
  8. Collections – Thèmes spécifiques
  9. Témoignages – Avis clients
  10. FAQ – Questions fréquentes
  11. Blog – Derniers articles
  12. Partenaires – Logos officiels
  13. Newsletter – Inscription
  14. Réseaux sociaux – Feed social
  15. Footer – Liens, mentions légales

🎨 Processus de développement

Étape 1 : Génération de la base avec l’IA

J’ai utilisé le générateur HTML IA avec des prompts précis :

Génère une page d'accueil e-commerce pour l'univers Minecraft.
Sections : header, hero, produits, catégories, slider, témoignages, newsletter, footer.
Couleurs : vert #3C8527 et gris #8B8B8B.
Style moderne, responsive mobile-first.

Résultat : Structure HTML/CSS de base générée, puis personnalisée à 70% manuellement.


Étape 2 : Personnalisation CSS

Exemple – Section produits responsive :

.products-grid {
  display: grid;
  grid-template-columns: 1fr; /* Mobile */
  gap: 20px;
}

@media (min-width: 768px) {
  .products-grid {
    grid-template-columns: repeat(2, 1fr); /* Tablette */
  }
}

@media (min-width: 1024px) {
  .products-grid {
    grid-template-columns: repeat(4, 1fr); /* Desktop */
  }
}

.product-card {
  background: white;
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
  transition: transform 0.3s;
}

.product-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 12px 24px rgba(0,0,0,0.15);
}

Étape 3 : JavaScript interactif

Slider de nouveautés :

class ProductSlider {
  constructor(container) {
    this.container = container;
    this.currentIndex = 0;
    this.init();
  }
  
  init() {
    this.addSwipeEvents();
    this.startAutoplay();
  }
  
  addSwipeEvents() {
    let startX = 0;
    this.container.addEventListener('touchstart', (e) => {
      startX = e.touches[0].clientX;
    });
    
    this.container.addEventListener('touchend', (e) => {
      const diff = startX - e.changedTouches[0].clientX;
      if (Math.abs(diff) > 50) {
        diff > 0 ? this.next() : this.prev();
      }
    });
  }
  
  next() {
    this.currentIndex = (this.currentIndex + 1) % this.slides.length;
    this.updateSlide();
  }
}

Animations au scroll :

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      entry.target.classList.add('animated');
    }
  });
}, { threshold: 0.15 });

document.querySelectorAll('[data-animate]').forEach(el => {
  observer.observe(el);
});

Étape 4 : Menu responsive

/* Mobile : menu déroulant */
.menu-toggle {
  display: flex; /* Burger visible */
}

.main-nav {
  position: fixed;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s;
}

.main-nav.active {
  max-height: 400px;
}

/* Desktop : menu horizontal */
@media (min-width: 768px) {
  .menu-toggle {
    display: none; /* Burger caché */
  }
  
  .main-nav {
    position: static;
    max-height: none;
  }
  
  .nav-list {
    display: flex;
    gap: 25px;
  }
}

🚧 Difficulté majeure : Responsive mobile

Problème

Le passage de 15 sections desktop → mobile créait :

  • Grid de produits cassée
  • Images déformées
  • Navigation confuse

Solutions

1. Grid CSS adaptatif

/* AVANT (problématique) */
.product-card { width: 25%; } /* Cassait sur mobile */

/* APRÈS (solution) */
.products-grid {
  grid-template-columns: 1fr; /* Mobile */
}
@media (min-width: 1024px) {
  grid-template-columns: repeat(4, 1fr); /* Desktop */
}

2. Images responsive

.hero-image {
  width: 100%;
  height: 300px; /* Mobile */
  object-fit: cover;
}

@media (min-width: 1024px) {
  height: 600px; /* Desktop */
}

3. Tests itératifs

  • ✅ iPhone SE (320px)
  • ✅ iPad (768px)
  • ✅ Desktop (1920px)

Temps de résolution : 2 jours d’ajustements


📊 Résultats obtenus

BoutiqueSectionsResponsivePageSpeed
Minecraft15✅ 100%89/100
One Piece15✅ 100%91/100
Dragon Ball15✅ 100%88/100
Sonic15✅ 100%90/100
Naruto15✅ 100%87/100

Statistiques globales

75 sections développées (15 × 5)
~3500 lignes HTML
~4200 lignes CSS
~1800 lignes JavaScript
89/100 PageSpeed moyen
< 2s temps de chargement

Optimisations réalisées

Avant :

  • ❌ 5.2s de chargement
  • ❌ 3.8 Mo
  • ❌ 62/100 PageSpeed

Après :

  • ✅ 1.8s de chargement (-65%)
  • ✅ 980 Ko (-74%)
  • ✅ 89/100 PageSpeed (+43%)

Actions :

  • Images PNG → WebP (-60%)
  • CSS/JS minifié (-30%)
  • Lazy loading natif
  • Code inutilisé supprimé

🎓 Compétences développées

✅ Développement front-end

  • HTML5 sémantique (header, nav, section, article)
  • CSS3 moderne (Grid, Flexbox, animations)
  • JavaScript ES6+ (classes, async, Intersection Observer)

✅ Responsive design

  • Mobile-first : Conception du plus petit au plus grand
  • Media queries : Breakpoints cohérents
  • Touch events : Gestion du tactile

✅ Utilisation d’IA

  • Génération assistée : Structure de base
  • Personnalisation : 70% du code final écrit manuellement
  • Optimisation : Suggestions d’amélioration

✅ Autonomie

  • 5 boutiques livrées en temps
  • Cohérence technique maintenue
  • Documentation pour maintenabilité

🔍 Leçons apprises

💡 Mobile-first est essentiel

Partir du mobile simplifie l’adaptation desktop. L’inverse crée des bugs et du refactoring.

💡 L’IA assiste, ne remplace pas

Le générateur fournit une base utile, mais 70% du code est personnalisé manuellement.

💡 Tester sur vrais appareils

Tester uniquement dans le navigateur desktop aurait créé des bugs majeurs sur mobile.


💡 Apports professionnels

Développement de 5 sites complets avec cohérence
Maîtrise du responsive design (mobile-first)
Utilisation efficace de l’IA (assistant, pas remplacement)
Gestion de projet autonome (deadlines respectées)
Optimisation des performances (-65% temps de chargement)


✅ 5 boutiques livrées | 75 sections | 100% responsive | 89/100 PageSpeed

Comments are closed