📋 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
| Boutique | Licence | Couleur principale |
|---|---|---|
| 🟢 Boutique Minecraft | Minecraft | #3C8527 |
| 🟠 One Piece Boutique | One Piece | #FF7700 |
| 🟡 Dragon Ball Boutique | Dragon Ball | #FF8C00 |
| 🔵 Boutique Sonic | Sonic | #0066CC |
| 🟣 Univers Naruto | Naruto | #FF6600 |
🛠️ Technologies utilisées
| Technologie | Utilisation |
|---|---|
| HTML5 | Structure sémantique |
| CSS3 | Flexbox, Grid, Animations |
| JavaScript | Sliders, animations scroll |
| IA générateur | interne |
🏗️ Structure des pages (15 sections)
Chaque page comprend :
- Header + Navigation – Logo, menu, panier
- Hero Section – Bannière principale + CTA
- Produits Phares – Best-sellers
- Catégories – Navigation par type
- Nouveautés – Slider/Carousel
- Bannière Promo – Offre spéciale
- Avantages – Livraison, qualité, SAV
- Collections – Thèmes spécifiques
- Témoignages – Avis clients
- FAQ – Questions fréquentes
- Blog – Derniers articles
- Partenaires – Logos officiels
- Newsletter – Inscription
- Réseaux sociaux – Feed social
- 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
| Boutique | Sections | Responsive | PageSpeed |
|---|---|---|---|
| Minecraft | 15 | ✅ 100% | 89/100 |
| One Piece | 15 | ✅ 100% | 91/100 |
| Dragon Ball | 15 | ✅ 100% | 88/100 |
| Sonic | 15 | ✅ 100% | 90/100 |
| Naruto | 15 | ✅ 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