Commit graph

43 commits

Author SHA1 Message Date
d97c92a20b Fix scroll horizontal mobile : overflow-hidden sur SquareLines (9 carrés aspect-square dépassaient le viewport) 2026-03-12 15:23:25 +01:00
cb4ae6af52 Menu mobile plein écran, CSS-only (checkbox hack), suppression JS menu 2026-03-12 12:06:10 +01:00
0a8a5f215a Page acteur : vidéos YouTube Lost in Traduction, Milega + MProd Video (FR/EN/AR) 2026-03-12 10:44:58 +01:00
1ad72a71ea Link : contraste amélioré en mode clair (purple-700 au lieu de purple-200) 2026-03-12 08:11:11 +01:00
ebcb03e736 Théâtre : 3 sous-pages (improvisation, écrit, acteur) FR/EN/AR, composants NavCard et BackLink 2026-03-12 00:49:28 +01:00
78a72bfb92 Parcours : dates/lieux plus visibles en mode nuit (opacité 80%, taille sm), ARaymond Remote / Grenoble 2026-03-11 23:59:36 +01:00
f32cd09940 Tri des expériences par date de fin décroissante puis date de début (parcours et /code, FR/EN/AR) 2026-03-11 23:21:54 +01:00
366d18764b Héritage i18n : les fichiers EN/AR ne surchargent que les champs traduits, les métadonnées partagées sont héritées de la base FR
Ajout de getLocalizedCollection/getLocalizedEntry dans content-i18n.ts pour fusionner automatiquement les entrées localisées avec leur base FR. Schémas adaptés (champs partagés optionnels), 78 fichiers de contenu allégés, consommateurs migrés.
2026-03-11 23:17:19 +01:00
fca4608beb Extraction composant CareerTimeline : suppression de la duplication 3x entre pages FR/EN/AR, traductions centralisées dans i18n.ts 2026-03-11 17:20:23 +01:00
8427fb066e Recommandations : taille de texte augmentée pour meilleure lisibilité 2026-03-11 00:35:25 +01:00
7b74131c00 Section En ligne : icônes des plateformes (LinkedIn, Malt, Stack Overflow, GitHub, Forgejo) 2026-03-11 00:17:37 +01:00
56eb6ce559 Valeurs & Approche : tirets latéraux violet, factorisation composant ValueItem 2026-03-11 00:01:54 +01:00
412e7033d1 ProjectCard : glow au hover, titre plus grand, technos principales différenciées 2026-03-10 23:45:22 +01:00
578c6733db Pages de détail individuelles pour les projets (FR, EN, AR)
Les cartes projet sont désormais cliquables et mènent vers une page de détail qui affiche le contenu markdown riche (historique, architecture, impact) avec les technologies, liens externes et hreflang.
2026-02-27 01:33:57 +01:00
d53039c75d Fix détection langue Google pour les pages arabes : hreflang + localisation UI
- decodeURIComponent dans getAlternateUrls pour matcher les pathnames arabes percent-encoded
- Localisation des aria-label et title (logo, menu mobile, dark mode toggle) via i18n.ts
- Ajout section ui dans les traductions (closeMenu, changeTheme, themeAuto/Light/Dark)
- Refacto logo.astro : utilise getHomePath/getLocaleFromUrl au lieu de logique dupliquée
- Refacto header.astro : utilise getLocaleFromUrl au lieu de détection manuelle
2026-02-26 12:06:55 +01:00
758b48521e Nettoyage projets : suppression DNS.Surf, Email.ML, GoBuild
Seuls Débats et DisMoi sont featured sur les hubs /code. Supprime
la vignette "Featured" du ProjectCard. Le hub filtre désormais sur
featured au lieu de prendre les 3 premiers.
2026-02-23 00:47:09 +01:00
89ab849050 Liens soulignés sur fond sombre pour meilleure lisibilité
Remplace text-indigo-600 par text-purple-200 avec soulignement
discret, cohérent avec le thème violet du site.
2026-02-23 00:33:00 +01:00
3e4a632adc Ajout de 4 recommandations Malt et avatars manquants
Nouvelles recommandations : John Samson, Thomas Kientz, Thomas
Morellato, Vadim Toropoff. Champ company rendu optionnel dans le
schéma. Ajout de 11 avatars.
2026-02-22 15:01:37 +01:00
e48a551dcb Refonte des pages hub /code en aperçus de contenu
Remplace les NavigationCards génériques par des aperçus réels :
4 expériences récentes, 3 projets featured, 3 catégories de
compétences et 3 recommandations, chacun avec lien "Voir tout".
Supprime le composant NavigationCard devenu inutile.
2026-02-22 14:39:47 +01:00
bf26caded3 Recommandations cliquables avec avatars LinkedIn
- Ajout de liens vers les profils des auteurs de recommandations (prop url)
- Ajout d'avatars pour 7 recommandeurs (Maxime Boudier, Matthieu Diouron, Benoit Sarda, Pascal Gentil, Benoit Talbot, Anne Marchadier, Laurent Perez)
- Simplification du champ avatar : juste le nom de fichier au lieu du chemin complet, résolution automatique via import.meta.glob
- Ajout des URLs de profil LinkedIn dans les 14 fichiers de recommandation
2026-02-22 14:07:09 +01:00
a3732887f5 Restructuration section Code en sous-pages avec collections de contenu
Remplacement de la page unique /code par un hub avec 4 sous-pages :
parcours, projets, compétences, recommandations (FR/EN/AR).

Les données statiques (experiences.json, projects.json) sont remplacées
par des collections Astro (experiences, projects, recommendations) avec
support trilingue. Les recommandations sont les vrais textes LinkedIn.

Le design utilise du glassmorphism sur fond violet avec des composants
dédiés (NavigationCard, ProjectCard, RecommendationCard, SkillBadge...).
Le CSS facet est scopé proprement pour ne plus casser les composants.
2026-02-22 01:30:06 +01:00
575f67665b Descriptions SEO spécifiques pour les pages photo
Chaque page photo a maintenant sa propre meta description au lieu du texte générique : la galerie principale utilise une description trilingue détaillée, les catégories utilisent leur subtitle, et l'index du blog photo utilise la traduction feedDescription.
2026-02-21 15:31:57 +01:00
a12f0880bf Ajout du schema JSON-LD BreadcrumbList sur les pages internes
Fil d'Ariane automatique basé sur le pathname : Accueil → Section → Sous-page. Adapté aux 3 langues (Accueil/Home/الرئيسية). Absent sur les pages d'accueil.
2026-02-21 15:17:12 +01:00
91296ecdf5 Ajout du schema JSON-LD BlogPosting pour les articles photo
Les photo blog posts génèrent maintenant un JSON-LD BlogPosting avec headline, datePublished et lien vers le schema Person via @id. PhotoBlogPostContent passe description, date et tags à PhotoLayout qui les transmet au composant SEO.
2026-02-21 14:58:40 +01:00
23510f59b1 Infrastructure SEO complète : sitemap, meta descriptions, OG, Twitter Cards, JSON-LD, hreflang
- Ajout de site: 'https://jalil.arfaoui.net' et @astrojs/sitemap avec support i18n dans astro.config.mjs
- Création de src/components/SEO.astro : meta description, canonical, Open Graph, Twitter Cards, hreflang (fr/en/ar/x-default), JSON-LD Person (11 liens sameAs) sur chaque page et JSON-LD WebSite sur les pages d'accueil
- Création de src/utils/page-translations.ts : mapping centralisé des URLs entre langues
- Fix lang="en" hardcodé dans main.astro → lang dynamique + dir="rtl" pour l'arabe
- Ajout de meta descriptions ciblées sur les 13 pages principales (FR/EN/AR)
- Refactorisation du LanguageSwitcher pour utiliser le mapping centralisé
- Ajout de la directive Sitemap dans robots.txt
2026-02-21 14:37:54 +01:00
7cb920f773 Ajout du nom "Jalil Arfaoui" dans le header et retrait du logo du footer
Le header des pages internes n'affichait qu'une icône maison, sans identifier le site. Le nom est maintenant visible à côté de l'icône. Le footer n'a plus besoin du composant Logo puisque le copyright contient déjà le nom.
2026-02-21 13:51:05 +01:00
10a67a9276 Ajout de la facette Code : fond violet Tiqa, contenu complet FR/EN/AR et logo
Système de facettes via data-facet sur body avec CSS global pour thématiser les pages /code avec la couleur Tiqa (#4b1762). Header et footer restent blancs avec texte violet. Contenu enrichi depuis tiqa.fr et LinkedIn (parcours détaillé, points forts, valeurs, compétences, présence en ligne). Balise footer sémantique.
2026-02-18 18:46:21 +01:00
ae565d46ac Migration Astro v4 → v5 avec Content Layer API
- Mise à jour astro@5.17, @astrojs/tailwind@6, @astrojs/check
- Remplacement des content collections legacy par des loaders glob()
- Déplacement src/content/config.ts → src/content.config.ts
- entry.slug → entry.id, entry.render() → render(entry)
- Ajout de generateId personnalisé pour préserver les points dans les IDs des fichiers multilingues (.en, .ar)
2026-02-18 18:11:29 +01:00
b5964cdc78 Ajout du sélecteur de langue dans le footer photo 2026-02-18 16:13:08 +01:00
3d23e84b34 Internationalisation complète et ajout des pages code, théâtre, acting (FR, EN, AR)
Ajout des pages code et théâtre/acting en FR, EN et AR.
Création de vraies routes localisées /en/photo et /ar/تصوير au lieu du hack ?lang=. Extraction de composants partagés (PhotoHomeContent, PhotoBlogIndexContent, PhotoBlogPostContent, PhotoAlbumContent) pour éviter la duplication entre langues. Traduction des catégories photo (16 fichiers JSON), de la navigation, du footer et des aria-labels.
Routes AR avec slugs arabes (/ar/تصوير/مدونة, /ar/تصوير/ألبومات).
2026-02-18 16:12:53 +01:00
cd1ca94b11 Ajout section Explorer sous le diaporama /photo et factorisation HeroViewport
La page /photo affiche maintenant une flèche de scroll invitant à découvrir
une section de navigation avec les catégories et le fil photo en dessous du
diaporama, avec un dégradé progressif entre les deux.

Le pattern "hero viewport + scroll indicator" est factorisé dans un composant
HeroViewport réutilisable, utilisé par /photo (mode transparent), les albums
de catégories et les posts du fil photo.
2026-02-18 10:28:57 +01:00
98778965d2 Remplacement du div onclick par un button pour le backdrop du menu mobile (accessibilité)
Le backdrop utilisait un div avec onclick inline. Remplacé par un <button> avec aria-label et le listener déplacé dans un script du composant.
2026-02-18 08:54:28 +01:00
261323b4ce Remontée des boutons prev/next au-dessus du footer sur mobile 2026-02-18 00:58:26 +01:00
835519a0c2 Extraction du footer photo en composant et correction responsive mobile 2026-02-18 00:49:21 +01:00
37339f4ebe Ajout lien Photo dans le header avec séparateur et correction alignement mobile 2026-02-18 00:12:45 +01:00
d01d42fbfb Ajout d'un lien Photo dans le header de la navigation photo 2026-02-17 23:49:07 +01:00
1c2f21363e Remplacement du div onclick par un lien dans posts-loop (accessibilité)
La carte de post utilisait un div avec onclick="location.href=..." pour la navigation. Remplacé par un <a> sémantique avec le <a> interne du titre transformé en <span> pour éviter l'imbrication de liens invalide.
2026-02-17 09:45:34 +01:00
8c550a947f Ajout du mode automatique (préférence système) au toggle dark mode
Le toggle cycle maintenant entre auto → light → dark. En mode auto, le thème suit prefers-color-scheme et réagit en temps réel aux changements système. L'icône et l'aria-label reflètent l'état courant.
2026-02-17 01:17:58 +01:00
e0cffad911 Marquage des balises <script> en inline dans Lightbox et PhotoGallery pour éviter l'extraction automatique des scripts. 2026-01-07 11:15:26 +01:00
b26bc077d9 Suppression de fonctions inutilisées et nettoyage des composants 2026-01-07 11:15:15 +01:00
030298d311 Correction erreurs TypeScript 2026-01-07 03:03:42 +01:00
dc3fb4f3d8 Ajout de la section galerie photo et nettoyage du template
Galerie photo :
- Ajout du layout photo avec slideshow plein écran
- Navigation par catégories (portraits, paysages, nature, etc.)
- Section "Fil Photo" avec posts illustrés (photoBlogPosts)
- Lightbox pour les albums de catégories
- Composants : Slideshow, CategoryNav, CategoryGrid, Lightbox, MasonryGallery

Nettoyage :
- Suppression du contenu démo du template (posts, images, about)
- Consolidation src/collections/ dans src/data/
- Suppression du config.js dupliqué (garde config.ts)
- Nettoyage des assets inutilisés (posts/, experiences/)

Corrections :
- Favicon récupéré du site actuel
- Chemins favicon corrigés dans les layouts

UI :
- Page d'accueil mise à jour
- Header/Footer simplifiés
- Nouvelle page À propos
2026-01-07 01:45:40 +01:00
bfcb5d6d70 initial setup from aria theme 2024-08-18 19:06:50 +02:00