Commit graph

23 commits

Author SHA1 Message Date
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