Le portfolio utilise un système automatique de gestion des images via le fichier portfolio_images.json.
- Format recommandé : JPG (photos) ou WebP (meilleure compression)
- Taille optimale : 1200x900px (ratio 4:3) ou plus grand
- Poids : < 500KB par image (optimiser avec TinyPNG ou ImageOptim)
- Nommage : Utiliser des noms descriptifs en minuscules avec tirets
- ✅
chromatic-resonance.jpg - ✅
pascals-lemur-leap.jpg - ❌
IMG_1234.jpg
- ✅
Copier les images dans le dossier assets/images/
Éditer assets/images/portfolio_images.json et ajouter une entrée :
{
"images": [
{
"filename": "mon-image.jpg",
"category": "digital",
"title": "Titre de mon œuvre",
"award": "1ère place @ Rsync 2024",
"year": 2024
}
]
}Champs disponibles :
filename(requis) : Nom du fichier dansassets/images/category(requis) :digital,animation,graphics,photo,gaming,traditionaltitle(optionnel) : Titre de l'œuvreaward(optionnel) : Texte de la récompense (ex: "1ère place @ Rsync 2024")year(optionnel) : Année de la récompense (utilisé pour trier les awards)
L'image apparaîtra automatiquement dans le portfolio !
digital- Digital Paintinganimation- Animation/Videographics- Graphicsphoto- Photosgaming- Gaming Artworktraditional- Traditional Artslogo- Logos (exclus de l'affichage portfolio)
Ajouter simplement les champs award et year dans le JSON :
{
"filename": "mon-image.jpg",
"category": "graphics",
"title": "Mon œuvre primée",
"award": "1ère place @ Rsync 2024",
"year": 2024
}Format de l'award :
- Le système extrait automatiquement l'événement et le rang
- Format recommandé :
"Xème place @ Nom de l'événement Année" - Exemples :
"1ère place @ Rsync 2024""10ème place @ Revision 2025""Session - Frontl1ne Demoparty"
Résultat automatique :
- ✅ Badge doré sur l'image dans le portfolio
- ✅ Card dans la section Awards
- ✅ Tri automatique par année
Le logo est automatiquement intégré dans :
-
Navigation (
nav-logo)- Logo + texte "Callisto Arts" sur desktop
- Logo seul sur mobile
- Effet hover avec scale
-
Footer (
footer-logo)- Logo centré avec texte de copyright
- Effet hover avec opacity
- Remplacer
assets/images/logo-cllisto.png - Conserver le même nom de fichier ou mettre à jour les références dans
index.html
Éditer les variables CSS dans styles.css :
:root {
--color-bg-primary: #1a1a1a; /* Fond principal */
--color-bg-secondary: #2a2a2a; /* Fond secondaire */
--color-bg-tertiary: #3a3a3a; /* Fond tertiaire */
--color-text-primary: #ffffff; /* Texte principal */
--color-text-secondary: #e0e0e0; /* Texte secondaire */
--color-text-tertiary: #b0b0b0; /* Texte tertiaire */
--color-accent: #ffffff; /* Couleur d'accent */
--color-border: rgba(255, 255, 255, 0.1); /* Bordures */
}Voir BACKGROUND.md pour la documentation complète du système de background animé.
Dans index.html, commenter ou supprimer la section :
<!-- Animated Background -->
<div class="animated-background" aria-hidden="true">
...
</div>Dans styles.css, modifier les durées :
.bg-gradient {
animation: gradientShift 20s ease infinite; /* Changer 20s */
}- Ouvrir les outils de développement (F12)
- Activer le mode responsive (Ctrl+Shift+M)
- Tester les breakpoints :
- Mobile : 375px, 414px
- Tablet : 768px, 1024px
- Desktop : 1280px, 1920px
-
Lighthouse (Chrome DevTools)
- Onglet "Accessibility"
- Score cible : > 90
-
WAVE (Extension navigateur)
-
Navigation clavier
- Tab pour naviguer
- Enter/Espace pour activer
- Escape pour fermer les modals
- ✅ Contraste texte/fond ≥ 7:1 (AAA)
- ✅ Tous les éléments interactifs accessibles au clavier
- ✅ Labels ARIA présents
- ✅ Focus visible sur tous les éléments
- ✅ Images avec attribut
altdescriptif - ✅ Structure sémantique HTML5
- ✅ Respect de
prefers-reduced-motion
- Utiliser WebP avec fallback JPG
- Lazy loading activé par défaut
- Compresser avec TinyPNG ou ImageOptim
- Garder seulement les meilleures résolutions (le script de tri supprime les doublons)
- Minifier pour la production
- Utiliser un CDN pour les fonts si nécessaire
- Le background animé utilise GPU acceleration automatiquement
- Garder le fichier
portfolio_images.jsonorganisé - Supprimer les entrées d'images supprimées
- Valider le JSON avant de déployer
-
Vérifier le JSON :
- Ouvrir
assets/images/portfolio_images.json - Valider la syntaxe JSON (pas de virgule en trop)
- Vérifier que les noms de fichiers correspondent
- Ouvrir
-
Vérifier les chemins :
- Les chemins dans le JSON doivent être juste le nom de fichier
- Les images doivent être dans
assets/images/
-
Console du navigateur :
- Ouvrir F12 → Console
- Chercher les erreurs 404 ou de parsing JSON
- Vérifier que
script.jsest chargé - Vérifier la console pour les erreurs JavaScript
- Vérifier que le bouton a l'id
navToggle
- Vérifier que les catégories dans le JSON correspondent aux filtres
- Vérifier que
initPortfolioFilters()est appelé après le chargement des images
- Vérifier que le champ
awardest présent dans le JSON - Vérifier que le champ
yearest présent siawardest présent - Vérifier la console pour les erreurs
- Vérifier que JavaScript est activé
- Vérifier la console pour les erreurs
- Vérifier que
prefers-reduced-motionn'est pas activé dans les préférences système - Vérifier que le navigateur supporte
backdrop-filter
- Alt text descriptif : Le système utilise automatiquement le
titledu JSON - Noms de fichiers : Utiliser des noms descriptifs et cohérents
- Organisation JSON : Garder les images triées par catégorie dans le JSON
- Backup : Toujours garder une copie des images originales
- SEO : Remplir les métadonnées Open Graph dans
index.html - Validation : Valider le JSON avant chaque déploiement
- Performance : Optimiser les images avant de les ajouter
-
Préparer l'image :
- Optimiser la taille et le poids
- Nommer de manière descriptive
-
Placer l'image :
- Copier dans
assets/images/
- Copier dans
-
Ajouter au JSON :
- Ouvrir
portfolio_images.json - Ajouter l'entrée avec toutes les métadonnées
- Ouvrir
-
Tester :
- Ouvrir le portfolio dans un navigateur
- Vérifier l'affichage
- Vérifier les filtres
- Vérifier la lightbox
-
Valider :
- Vérifier l'accessibilité
- Vérifier la responsivité
- Vérifier les performances
Pour toute question ou problème, consulter :
- Documentation HTML5 : https://developer.mozilla.org/fr/docs/Web/HTML
- Documentation CSS : https://developer.mozilla.org/fr/docs/Web/CSS
- Documentation JavaScript : https://developer.mozilla.org/fr/docs/Web/JavaScript
- WCAG Guidelines : https://www.w3.org/WAI/WCAG21/quickref/
- Documentation du background :
BACKGROUND.md
-
Image :
symphony-abyss.jpg→ Placer dansassets/images/ -
JSON : Ajouter dans
portfolio_images.json:
{
"filename": "symphony-abyss.jpg",
"category": "graphics",
"title": "Symphony of the abyss",
"award": "2ème place @ Rsync 2025",
"year": 2025
}- Résultat :
- ✅ Image dans le portfolio avec badge doré
- ✅ Filtrable par catégorie "graphics"
- ✅ Card dans la section Awards (triée par année)
- ✅ Lightbox avec toutes les informations
C'est tout ! Le système fait le reste automatiquement.