diff --git a/app/Competences/[slug]/page.tsx b/app/Competences/[slug]/page.tsx index 8c75be6..cf8da8d 100644 --- a/app/Competences/[slug]/page.tsx +++ b/app/Competences/[slug]/page.tsx @@ -1,16 +1,16 @@ -"use client"; // ✅ Indique que ce composant fonctionne côté client +"use client"; -import { useParams } from "next/navigation"; // ✅ Nouvelle méthode pour récupérer `params` +import { useParams } from "next/navigation"; import { useEffect, useState } from "react"; import ContentSectionCompetencesContainer from "../../components/ContentSectionCompetencesContainer"; export default function CompetencePage() { - const params = useParams(); // ✅ Récupérer `params` correctement + const params = useParams(); const [slug, setSlug] = useState(null); useEffect(() => { if (params?.slug) { - setSlug(params.slug as string); // ✅ Assurer que `slug` est bien une string + setSlug(params.slug as string); } }, [params]); diff --git a/app/Competences/page.jsx b/app/Competences/page.jsx index 252e85f..7c64fa7 100644 --- a/app/Competences/page.jsx +++ b/app/Competences/page.jsx @@ -2,16 +2,15 @@ import { useEffect, useState } from "react"; import Link from "next/link"; -import { getApiUrl } from "../utils/getApiUrl"; // 🔥 Import de l'URL dynamique -import CarouselCompetences from "../components/CarouselCompetences"; // 🔥 Import du composant CarouselCompetences +import { getApiUrl } from "../utils/getApiUrl"; +import CarouselCompetences from "../components/CarouselCompetences"; export default function Page() { - const [competences, setCompetences] = useState([]); // 🔥 Stocker les compétences une seule fois - const apiUrl = getApiUrl(); // 🔥 Définition de l'URL API + const [competences, setCompetences] = useState([]); + const apiUrl = getApiUrl(); useEffect(() => { async function fetchCompetences() { - console.log("🔍 API utilisée pour les compétences :", apiUrl); try { const response = await fetch(`${apiUrl}/api/competences?populate=*`); if (!response.ok) { @@ -24,13 +23,13 @@ export default function Page() { } } - fetchCompetences(); // 🔥 Exécuter une seule fois au montage du composant - }, [apiUrl]); // ✅ Exécuter `useEffect()` uniquement si `apiUrl` change + fetchCompetences(); + }, [apiUrl]); return (
- {/* Affichage d'un message si aucune compétence n'est trouvée */} + {competences.length === 0 ? (

Aucune compétence disponible.

) : ( @@ -47,7 +46,6 @@ export default function Page() { key={competence.id} className="bg-white/70 rounded-lg shadow-md overflow-hidden w-full h-auto flex flex-col transform transition-all duration-300 hover:scale-105 hover:shadow-xl p-4" > - {/* Lien vers la page de détail de la compétence */}
diff --git a/app/admin/messages/page.tsx b/app/admin/messages/page.tsx index 1ab7aec..7ed4721 100644 --- a/app/admin/messages/page.tsx +++ b/app/admin/messages/page.tsx @@ -1,7 +1,5 @@ -import { getApiUrl } from "../../utils/getApiUrl"; // 🔥 Import de l'URL dynamique -// // Composant principal de la page des messages +import { getApiUrl } from "../../utils/getApiUrl"; export default async function MessagesPage() { - // Récupération des messages depuis l'API Strapi const apiUrl = getApiUrl(); const res = await fetch(`${apiUrl}/api/messages`); const { data } = await res.json(); @@ -11,19 +9,14 @@ export default async function MessagesPage() { {/* Titre de la page */}

📬 Messages reçus

- {/* Affichage d'un message si aucun message n'est reçu */} {data.length === 0 ? (

Aucun message reçu.

) : (
    - {/* Boucle sur les messages pour les afficher */} {data.map((msg: any) => (
  • - {/* Affichage du nom et de l'email de l'expéditeur */}

    👤 {msg.name} ({msg.email})

    - {/* Affichage de la date de réception du message */}

    📅 {new Date(msg.createdAt).toLocaleString("fr-FR")}

    - {/* Affichage du contenu du message */}

    {msg.message}

  • ))} diff --git a/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_a2221ff8-b42a-46dc-a3a4-64b062038307_resultat.webp b/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_a2221ff8-b42a-46dc-a3a4-64b062038307_resultat.webp new file mode 100644 index 0000000..20852f4 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_a2221ff8-b42a-46dc-a3a4-64b062038307_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_c12220dd-3969-4766-a34e-4eb348094a63_resultat.webp b/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_c12220dd-3969-4766-a34e-4eb348094a63_resultat.webp new file mode 100644 index 0000000..832a947 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Abstract_futuristic_representation_of_deep_learning_c12220dd-3969-4766-a34e-4eb348094a63_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Artistic_cyberpunk_vision_of_ChatGPT_an_ethereal_hu_95bb2950-cf1e-439f-b074-f391f75ad7c0_resultat.webp b/app/assets/images/IA/u6113228922_Artistic_cyberpunk_vision_of_ChatGPT_an_ethereal_hu_95bb2950-cf1e-439f-b074-f391f75ad7c0_resultat.webp new file mode 100644 index 0000000..96123e9 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Artistic_cyberpunk_vision_of_ChatGPT_an_ethereal_hu_95bb2950-cf1e-439f-b074-f391f75ad7c0_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Cyberpunk_AI_hub_where_deep_learning_algorithms_man_01911bc2-9f6b-4106-a6d9-c61e9e945887_resultat.webp b/app/assets/images/IA/u6113228922_Cyberpunk_AI_hub_where_deep_learning_algorithms_man_01911bc2-9f6b-4106-a6d9-c61e9e945887_resultat.webp new file mode 100644 index 0000000..18443ef Binary files /dev/null and b/app/assets/images/IA/u6113228922_Cyberpunk_AI_hub_where_deep_learning_algorithms_man_01911bc2-9f6b-4106-a6d9-c61e9e945887_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_41adb856-ec51-467a-b2a3-5ac5b17a6c0e_resultat.webp b/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_41adb856-ec51-467a-b2a3-5ac5b17a6c0e_resultat.webp new file mode 100644 index 0000000..4129ef1 Binary files /dev/null and b/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_41adb856-ec51-467a-b2a3-5ac5b17a6c0e_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_f5dcba88-3344-4ec1-8d94-c4370e247485_resultat.webp b/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_f5dcba88-3344-4ec1-8d94-c4370e247485_resultat.webp new file mode 100644 index 0000000..83dcece Binary files /dev/null and b/app/assets/images/IA/u6113228922_High-tech_abstract_representation_of_Stable_Diffusi_f5dcba88-3344-4ec1-8d94-c4370e247485_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_0480f19d-bcc8-43e6-8cd5-a74902911ec8_resultat.webp b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_0480f19d-bcc8-43e6-8cd5-a74902911ec8_resultat.webp new file mode 100644 index 0000000..634aea7 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_0480f19d-bcc8-43e6-8cd5-a74902911ec8_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f104b26b-2bde-4e3c-ad3b-e5c52999f908_resultat.webp b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f104b26b-2bde-4e3c-ad3b-e5c52999f908_resultat.webp new file mode 100644 index 0000000..19b22c1 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f104b26b-2bde-4e3c-ad3b-e5c52999f908_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f2eac838-188a-4023-a0f7-0e433e635902_resultat.webp b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f2eac838-188a-4023-a0f7-0e433e635902_resultat.webp new file mode 100644 index 0000000..8b08cab Binary files /dev/null and b/app/assets/images/IA/u6113228922_Hyper-realistic_close-up_of_an_NVIDIA_AI_supercompu_f2eac838-188a-4023-a0f7-0e433e635902_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Scientific_visualization_of_deep_learning_a_massive_911aa3d3-7974-4653-8285-deaa0e2ef372_resultat.webp b/app/assets/images/IA/u6113228922_Scientific_visualization_of_deep_learning_a_massive_911aa3d3-7974-4653-8285-deaa0e2ef372_resultat.webp new file mode 100644 index 0000000..0e3df16 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Scientific_visualization_of_deep_learning_a_massive_911aa3d3-7974-4653-8285-deaa0e2ef372_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_a_deep_learning_dfba3ac2-2902-4d1a-9764-7a70c636477b_resultat.webp b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_a_deep_learning_dfba3ac2-2902-4d1a-9764-7a70c636477b_resultat.webp new file mode 100644 index 0000000..9a61144 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_a_deep_learning_dfba3ac2-2902-4d1a-9764-7a70c636477b_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_00172d42-bb7f-4c25-908f-f724bf5e3a8b_resultat.webp b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_00172d42-bb7f-4c25-908f-f724bf5e3a8b_resultat.webp new file mode 100644 index 0000000..39f2c34 Binary files /dev/null and b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_00172d42-bb7f-4c25-908f-f724bf5e3a8b_resultat.webp differ diff --git a/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_2c88fdf2-adf4-445e-a0d2-e836aa36ede1_resultat.webp b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_2c88fdf2-adf4-445e-a0d2-e836aa36ede1_resultat.webp new file mode 100644 index 0000000..3f8efbc Binary files /dev/null and b/app/assets/images/IA/u6113228922_Ultra-realistic_cinematic_render_of_artificial_inte_2c88fdf2-adf4-445e-a0d2-e836aa36ede1_resultat.webp differ diff --git a/app/assets/images/born2beroot/u6113228922_A_digital_fortress_representing_Linux_server_securi_84fd939f-978b-486e-9d03-eae57fef1889_resultat.webp b/app/assets/images/born2beroot/u6113228922_A_digital_fortress_representing_Linux_server_securi_84fd939f-978b-486e-9d03-eae57fef1889_resultat.webp new file mode 100644 index 0000000..53b2089 Binary files /dev/null and b/app/assets/images/born2beroot/u6113228922_A_digital_fortress_representing_Linux_server_securi_84fd939f-978b-486e-9d03-eae57fef1889_resultat.webp differ diff --git a/app/assets/images/born2beroot/u6113228922_A_futuristic_cyberpunk_server_room_glowing_LED_ligh_b768857a-0968-48ca-bc13-9df798a0d5b9_resultat.webp b/app/assets/images/born2beroot/u6113228922_A_futuristic_cyberpunk_server_room_glowing_LED_ligh_b768857a-0968-48ca-bc13-9df798a0d5b9_resultat.webp new file mode 100644 index 0000000..90ee33d Binary files /dev/null and b/app/assets/images/born2beroot/u6113228922_A_futuristic_cyberpunk_server_room_glowing_LED_ligh_b768857a-0968-48ca-bc13-9df798a0d5b9_resultat.webp differ diff --git a/app/assets/images/born2beroot/u6113228922_A_stylized_infographic_of_the_Born2beroot_project_f_decf5513-23d6-4f2e-8ae2-fda60d5ae3c1_resultat.webp b/app/assets/images/born2beroot/u6113228922_A_stylized_infographic_of_the_Born2beroot_project_f_decf5513-23d6-4f2e-8ae2-fda60d5ae3c1_resultat.webp new file mode 100644 index 0000000..e702bae Binary files /dev/null and b/app/assets/images/born2beroot/u6113228922_A_stylized_infographic_of_the_Born2beroot_project_f_decf5513-23d6-4f2e-8ae2-fda60d5ae3c1_resultat.webp differ diff --git a/app/assets/images/cpp1/u6113228922_A_futuristic_cybernetic_environment_where_floating__70f6d5c9-ef1c-4513-b2e8-91d8a03bccba_resultat.webp b/app/assets/images/cpp1/u6113228922_A_futuristic_cybernetic_environment_where_floating__70f6d5c9-ef1c-4513-b2e8-91d8a03bccba_resultat.webp new file mode 100644 index 0000000..278430f Binary files /dev/null and b/app/assets/images/cpp1/u6113228922_A_futuristic_cybernetic_environment_where_floating__70f6d5c9-ef1c-4513-b2e8-91d8a03bccba_resultat.webp differ diff --git a/app/assets/images/cpp1/u6113228922_A_futuristic_cybernetic_environment_where_floating__e698f4c4-e9c5-447f-8201-ce314005111c_resultat.webp b/app/assets/images/cpp1/u6113228922_A_futuristic_cybernetic_environment_where_floating__e698f4c4-e9c5-447f-8201-ce314005111c_resultat.webp new file mode 100644 index 0000000..8b6c6e5 Binary files /dev/null and b/app/assets/images/cpp1/u6113228922_A_futuristic_cybernetic_environment_where_floating__e698f4c4-e9c5-447f-8201-ce314005111c_resultat.webp differ diff --git a/app/assets/images/cpp1/u6113228922_A_structured_and_modern_infographic_visually_explai_00608093-43a2-4512-b376-a14c35e488aa_resultat.webp b/app/assets/images/cpp1/u6113228922_A_structured_and_modern_infographic_visually_explai_00608093-43a2-4512-b376-a14c35e488aa_resultat.webp new file mode 100644 index 0000000..3347935 Binary files /dev/null and b/app/assets/images/cpp1/u6113228922_A_structured_and_modern_infographic_visually_explai_00608093-43a2-4512-b376-a14c35e488aa_resultat.webp differ diff --git a/app/assets/images/cpp1/u6113228922_A_structured_and_modern_infographic_visually_explai_933b9cf3-653a-4f75-920e-a7bff4721aff_resultat.webp b/app/assets/images/cpp1/u6113228922_A_structured_and_modern_infographic_visually_explai_933b9cf3-653a-4f75-920e-a7bff4721aff_resultat.webp new file mode 100644 index 0000000..e86ce7d Binary files /dev/null and b/app/assets/images/cpp1/u6113228922_A_structured_and_modern_infographic_visually_explai_933b9cf3-653a-4f75-920e-a7bff4721aff_resultat.webp differ diff --git a/app/assets/images/cpp1/u6113228922_A_surreal_representation_of_object-oriented_program_714fb87b-9ce8-4f03-8349-91c045868180_resultat.webp b/app/assets/images/cpp1/u6113228922_A_surreal_representation_of_object-oriented_program_714fb87b-9ce8-4f03-8349-91c045868180_resultat.webp new file mode 100644 index 0000000..1f39868 Binary files /dev/null and b/app/assets/images/cpp1/u6113228922_A_surreal_representation_of_object-oriented_program_714fb87b-9ce8-4f03-8349-91c045868180_resultat.webp differ diff --git a/app/assets/images/cpp1/u6113228922_A_surreal_representation_of_object-oriented_program_cc55c908-a96a-4d29-aef1-7cf38b568191_resultat.webp b/app/assets/images/cpp1/u6113228922_A_surreal_representation_of_object-oriented_program_cc55c908-a96a-4d29-aef1-7cf38b568191_resultat.webp new file mode 100644 index 0000000..980a69f Binary files /dev/null and b/app/assets/images/cpp1/u6113228922_A_surreal_representation_of_object-oriented_program_cc55c908-a96a-4d29-aef1-7cf38b568191_resultat.webp differ diff --git a/app/assets/images/cpp1/u6113228922_A_vintage_computer_screen_displaying_early_C_code_c_8fe5fbbc-cfe1-4190-9041-d1dddf5b7af4_resultat.webp b/app/assets/images/cpp1/u6113228922_A_vintage_computer_screen_displaying_early_C_code_c_8fe5fbbc-cfe1-4190-9041-d1dddf5b7af4_resultat.webp new file mode 100644 index 0000000..a13843e Binary files /dev/null and b/app/assets/images/cpp1/u6113228922_A_vintage_computer_screen_displaying_early_C_code_c_8fe5fbbc-cfe1-4190-9041-d1dddf5b7af4_resultat.webp differ diff --git a/app/assets/images/cpp1/u6113228922_A_young_programmer_deeply_focused_on_their_screen_w_a19c6faf-7abe-4402-8f71-e2e7328072cf_resultat.webp b/app/assets/images/cpp1/u6113228922_A_young_programmer_deeply_focused_on_their_screen_w_a19c6faf-7abe-4402-8f71-e2e7328072cf_resultat.webp new file mode 100644 index 0000000..3837209 Binary files /dev/null and b/app/assets/images/cpp1/u6113228922_A_young_programmer_deeply_focused_on_their_screen_w_a19c6faf-7abe-4402-8f71-e2e7328072cf_resultat.webp differ diff --git a/app/assets/images/cpp2/u6113228922_A_futuristic_digital_environment_where_abstract_dat_02027b0f-125b-456d-90b6-5044a56639b5_resultat.webp b/app/assets/images/cpp2/u6113228922_A_futuristic_digital_environment_where_abstract_dat_02027b0f-125b-456d-90b6-5044a56639b5_resultat.webp new file mode 100644 index 0000000..f3d704d Binary files /dev/null and b/app/assets/images/cpp2/u6113228922_A_futuristic_digital_environment_where_abstract_dat_02027b0f-125b-456d-90b6-5044a56639b5_resultat.webp differ diff --git a/app/assets/images/cpp2/u6113228922_A_futuristic_digital_environment_where_abstract_dat_14e7ea26-1ed0-46a0-a3e8-7cc288b8718e_resultat.webp b/app/assets/images/cpp2/u6113228922_A_futuristic_digital_environment_where_abstract_dat_14e7ea26-1ed0-46a0-a3e8-7cc288b8718e_resultat.webp new file mode 100644 index 0000000..0baecd7 Binary files /dev/null and b/app/assets/images/cpp2/u6113228922_A_futuristic_digital_environment_where_abstract_dat_14e7ea26-1ed0-46a0-a3e8-7cc288b8718e_resultat.webp differ diff --git a/app/assets/images/cpp2/u6113228922_A_programmer_intently_focused_on_writing_advanced_C_546b1439-978b-4759-af26-51bd92ecfd74_resultat.webp b/app/assets/images/cpp2/u6113228922_A_programmer_intently_focused_on_writing_advanced_C_546b1439-978b-4759-af26-51bd92ecfd74_resultat.webp new file mode 100644 index 0000000..4dd2104 Binary files /dev/null and b/app/assets/images/cpp2/u6113228922_A_programmer_intently_focused_on_writing_advanced_C_546b1439-978b-4759-af26-51bd92ecfd74_resultat.webp differ diff --git a/app/assets/images/cpp2/u6113228922_A_structured_infographic_illustrating_advanced_C_to_315824ab-418b-4ab6-b5e4-6798a07e5b02_resultat.webp b/app/assets/images/cpp2/u6113228922_A_structured_infographic_illustrating_advanced_C_to_315824ab-418b-4ab6-b5e4-6798a07e5b02_resultat.webp new file mode 100644 index 0000000..5a25cb9 Binary files /dev/null and b/app/assets/images/cpp2/u6113228922_A_structured_infographic_illustrating_advanced_C_to_315824ab-418b-4ab6-b5e4-6798a07e5b02_resultat.webp differ diff --git a/app/assets/images/cpp2/u6113228922_A_surreal_digital_artwork_representing_advanced_C_c_d3219549-1895-4b21-9b15-bd637302244c_resultat.webp b/app/assets/images/cpp2/u6113228922_A_surreal_digital_artwork_representing_advanced_C_c_d3219549-1895-4b21-9b15-bd637302244c_resultat.webp new file mode 100644 index 0000000..1a61f4f Binary files /dev/null and b/app/assets/images/cpp2/u6113228922_A_surreal_digital_artwork_representing_advanced_C_c_d3219549-1895-4b21-9b15-bd637302244c_resultat.webp differ diff --git a/app/assets/images/cpp2/u6113228922_A_vintage_UNIX_workstation_displaying_an_early_impl_0489d863-8513-419c-b2fc-b242ad297684_resultat.webp b/app/assets/images/cpp2/u6113228922_A_vintage_UNIX_workstation_displaying_an_early_impl_0489d863-8513-419c-b2fc-b242ad297684_resultat.webp new file mode 100644 index 0000000..edc9508 Binary files /dev/null and b/app/assets/images/cpp2/u6113228922_A_vintage_UNIX_workstation_displaying_an_early_impl_0489d863-8513-419c-b2fc-b242ad297684_resultat.webp differ diff --git a/app/assets/images/cub3d/u6113228922_A_futuristic_data-driven_visualization_of_a_raycast_829fa76e-d35e-454b-968a-6a652131630b_resultat.webp b/app/assets/images/cub3d/u6113228922_A_futuristic_data-driven_visualization_of_a_raycast_829fa76e-d35e-454b-968a-6a652131630b_resultat.webp new file mode 100644 index 0000000..d3ee4c9 Binary files /dev/null and b/app/assets/images/cub3d/u6113228922_A_futuristic_data-driven_visualization_of_a_raycast_829fa76e-d35e-454b-968a-6a652131630b_resultat.webp differ diff --git a/app/assets/images/cub3d/u6113228922_A_futuristic_data-driven_visualization_of_a_raycast_98af669c-a057-439a-a48f-cff287966d5c_resultat.webp b/app/assets/images/cub3d/u6113228922_A_futuristic_data-driven_visualization_of_a_raycast_98af669c-a057-439a-a48f-cff287966d5c_resultat.webp new file mode 100644 index 0000000..a4f63cf Binary files /dev/null and b/app/assets/images/cub3d/u6113228922_A_futuristic_data-driven_visualization_of_a_raycast_98af669c-a057-439a-a48f-cff287966d5c_resultat.webp differ diff --git a/app/assets/images/cub3d/u6113228922_A_programmer_intensely_focused_on_their_screen_deve_1af7c8bf-6754-4904-bb55-bafedfdcc491_resultat.webp b/app/assets/images/cub3d/u6113228922_A_programmer_intensely_focused_on_their_screen_deve_1af7c8bf-6754-4904-bb55-bafedfdcc491_resultat.webp new file mode 100644 index 0000000..d49de93 Binary files /dev/null and b/app/assets/images/cub3d/u6113228922_A_programmer_intensely_focused_on_their_screen_deve_1af7c8bf-6754-4904-bb55-bafedfdcc491_resultat.webp differ diff --git a/app/assets/images/cub3d/u6113228922_A_surreal_representation_of_a_world_being_built_in__439c1fb3-2d81-458f-846d-f3af17022572_resultat.webp b/app/assets/images/cub3d/u6113228922_A_surreal_representation_of_a_world_being_built_in__439c1fb3-2d81-458f-846d-f3af17022572_resultat.webp new file mode 100644 index 0000000..ae6970b Binary files /dev/null and b/app/assets/images/cub3d/u6113228922_A_surreal_representation_of_a_world_being_built_in__439c1fb3-2d81-458f-846d-f3af17022572_resultat.webp differ diff --git a/app/assets/images/cub3d/u6113228922_A_surreal_representation_of_a_world_being_built_in__b45e790a-be55-428b-acb2-da662a30a240_resultat.webp b/app/assets/images/cub3d/u6113228922_A_surreal_representation_of_a_world_being_built_in__b45e790a-be55-428b-acb2-da662a30a240_resultat.webp new file mode 100644 index 0000000..e04e923 Binary files /dev/null and b/app/assets/images/cub3d/u6113228922_A_surreal_representation_of_a_world_being_built_in__b45e790a-be55-428b-acb2-da662a30a240_resultat.webp differ diff --git a/app/assets/images/cub3d/u6113228922_A_surreal_representation_of_a_world_being_built_in__c0d95a49-3a1b-4fe4-9deb-2133938a0d5d_resultat.webp b/app/assets/images/cub3d/u6113228922_A_surreal_representation_of_a_world_being_built_in__c0d95a49-3a1b-4fe4-9deb-2133938a0d5d_resultat.webp new file mode 100644 index 0000000..39619fd Binary files /dev/null and b/app/assets/images/cub3d/u6113228922_A_surreal_representation_of_a_world_being_built_in__c0d95a49-3a1b-4fe4-9deb-2133938a0d5d_resultat.webp differ diff --git a/app/assets/images/cub3d/u6113228922_A_vintage_CRT_monitor_displaying_a_raycasting-based_49abcfa5-07b8-4715-b48f-ba3abfe30331_resultat.webp b/app/assets/images/cub3d/u6113228922_A_vintage_CRT_monitor_displaying_a_raycasting-based_49abcfa5-07b8-4715-b48f-ba3abfe30331_resultat.webp new file mode 100644 index 0000000..ed20e12 Binary files /dev/null and b/app/assets/images/cub3d/u6113228922_A_vintage_CRT_monitor_displaying_a_raycasting-based_49abcfa5-07b8-4715-b48f-ba3abfe30331_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_12130b5b-2991-483e-9534-51981371a336_resultat.webp b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_12130b5b-2991-483e-9534-51981371a336_resultat.webp new file mode 100644 index 0000000..e2afb8b Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_12130b5b-2991-483e-9534-51981371a336_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_acc05b6f-0d23-4f51-934a-e7d8fb2063ab_resultat.webp b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_acc05b6f-0d23-4f51-934a-e7d8fb2063ab_resultat.webp new file mode 100644 index 0000000..21e16e4 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_acc05b6f-0d23-4f51-934a-e7d8fb2063ab_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_eb1e9152-8736-4f89-973e-7a21d0bea824_resultat.webp b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_eb1e9152-8736-4f89-973e-7a21d0bea824_resultat.webp new file mode 100644 index 0000000..70f4c95 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Cyberpunk-inspired_smart_home_neon-lit_walls_with_d_eb1e9152-8736-4f89-973e-7a21d0bea824_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__4a7ef30c-c4c8-4855-be5d-17add5300780_resultat.webp b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__4a7ef30c-c4c8-4855-be5d-17add5300780_resultat.webp new file mode 100644 index 0000000..f42e7d2 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__4a7ef30c-c4c8-4855-be5d-17add5300780_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__54aa8176-9e2e-437e-9cc1-f7fbb5c13be9_resultat.webp b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__54aa8176-9e2e-437e-9cc1-f7fbb5c13be9_resultat.webp new file mode 100644 index 0000000..1445f68 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__54aa8176-9e2e-437e-9cc1-f7fbb5c13be9_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__6620335f-2989-4d82-9c03-fc81d9853664_resultat.webp b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__6620335f-2989-4d82-9c03-fc81d9853664_resultat.webp new file mode 100644 index 0000000..7bd2343 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__6620335f-2989-4d82-9c03-fc81d9853664_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__a818e20d-c0af-40c2-b92c-2cda2382ba7c_resultat.webp b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__a818e20d-c0af-40c2-b92c-2cda2382ba7c_resultat.webp new file mode 100644 index 0000000..e9e3f40 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__a818e20d-c0af-40c2-b92c-2cda2382ba7c_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__f2077705-0df8-41c7-9681-76c6d9a53df9_resultat.webp b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__f2077705-0df8-41c7-9681-76c6d9a53df9_resultat.webp new file mode 100644 index 0000000..d6883de Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Hyper-detailed_smart_kitchen_with_AI-powered_voice__f2077705-0df8-41c7-9681-76c6d9a53df9_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_2dda0460-cfee-4a5f-87e2-7924562d9918_resultat.webp b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_2dda0460-cfee-4a5f-87e2-7924562d9918_resultat.webp new file mode 100644 index 0000000..e3162e6 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_2dda0460-cfee-4a5f-87e2-7924562d9918_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_4184ddf8-0fdc-4e98-ba8a-7003ac356c37_resultat.webp b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_4184ddf8-0fdc-4e98-ba8a-7003ac356c37_resultat.webp new file mode 100644 index 0000000..bc77e3d Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_4184ddf8-0fdc-4e98-ba8a-7003ac356c37_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_8260f992-3ddd-4a88-a2c0-9818d6a0e344_resultat.webp b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_8260f992-3ddd-4a88-a2c0-9818d6a0e344_resultat.webp new file mode 100644 index 0000000..1fa23ec Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_8260f992-3ddd-4a88-a2c0-9818d6a0e344_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_b9a990ae-c267-4d23-92f6-613cf0e33cb5_resultat.webp b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_b9a990ae-c267-4d23-92f6-613cf0e33cb5_resultat.webp new file mode 100644 index 0000000..ac16420 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_b9a990ae-c267-4d23-92f6-613cf0e33cb5_resultat.webp differ diff --git a/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_f79fd32d-b17f-46d2-9e63-565eefc10ea1_resultat.webp b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_f79fd32d-b17f-46d2-9e63-565eefc10ea1_resultat.webp new file mode 100644 index 0000000..2cd1965 Binary files /dev/null and b/app/assets/images/domotique/u6113228922_Ultra-realistic_futuristic_smart_home_interior_illu_f79fd32d-b17f-46d2-9e63-565eefc10ea1_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_futuristic_digital_environment_where_fractals_dyn_f71bc4d5-3b7a-450d-b1c9-cf922fc40d0f_resultat.webp b/app/assets/images/fractol/u6113228922_A_futuristic_digital_environment_where_fractals_dyn_f71bc4d5-3b7a-450d-b1c9-cf922fc40d0f_resultat.webp new file mode 100644 index 0000000..7f83895 Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_futuristic_digital_environment_where_fractals_dyn_f71bc4d5-3b7a-450d-b1c9-cf922fc40d0f_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_mesmerizing_abstract_fractal_landscape_where_infi_356a55d7-f2fc-46b8-bec7-d07f3ac9385f_resultat.webp b/app/assets/images/fractol/u6113228922_A_mesmerizing_abstract_fractal_landscape_where_infi_356a55d7-f2fc-46b8-bec7-d07f3ac9385f_resultat.webp new file mode 100644 index 0000000..9dcf7f2 Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_mesmerizing_abstract_fractal_landscape_where_infi_356a55d7-f2fc-46b8-bec7-d07f3ac9385f_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_mesmerizing_abstract_fractal_landscape_where_infi_72e572e6-9076-4a3c-8018-7877591edbb8_resultat.webp b/app/assets/images/fractol/u6113228922_A_mesmerizing_abstract_fractal_landscape_where_infi_72e572e6-9076-4a3c-8018-7877591edbb8_resultat.webp new file mode 100644 index 0000000..44bb113 Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_mesmerizing_abstract_fractal_landscape_where_infi_72e572e6-9076-4a3c-8018-7877591edbb8_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_mesmerizing_abstract_fractal_landscape_where_infi_c2c58f47-67e9-49bf-a41d-87b16e02783b_resultat.webp b/app/assets/images/fractol/u6113228922_A_mesmerizing_abstract_fractal_landscape_where_infi_c2c58f47-67e9-49bf-a41d-87b16e02783b_resultat.webp new file mode 100644 index 0000000..4f12273 Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_mesmerizing_abstract_fractal_landscape_where_infi_c2c58f47-67e9-49bf-a41d-87b16e02783b_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_3ee7192b-dca8-4400-ba83-0560bfadde6d_resultat.webp b/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_3ee7192b-dca8-4400-ba83-0560bfadde6d_resultat.webp new file mode 100644 index 0000000..6ffaf8e Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_3ee7192b-dca8-4400-ba83-0560bfadde6d_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_902abd2f-142d-4756-9b77-749d71ab76ba_resultat.webp b/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_902abd2f-142d-4756-9b77-749d71ab76ba_resultat.webp new file mode 100644 index 0000000..0240fb4 Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_902abd2f-142d-4756-9b77-749d71ab76ba_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_98de74f6-5819-4010-8d36-7d4c932ecec3_resultat.webp b/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_98de74f6-5819-4010-8d36-7d4c932ecec3_resultat.webp new file mode 100644 index 0000000..eca661e Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_98de74f6-5819-4010-8d36-7d4c932ecec3_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_a2ac582d-a51a-46f5-92a7-19c87d92f703_resultat.webp b/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_a2ac582d-a51a-46f5-92a7-19c87d92f703_resultat.webp new file mode 100644 index 0000000..682ec1c Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_modern_and_clean_infographic_illustrating_the_mat_a2ac582d-a51a-46f5-92a7-19c87d92f703_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_programmer_intensely_focused_on_their_screen_wher_1769caab-1b49-4705-b502-8e5a4abcec7e_resultat.webp b/app/assets/images/fractol/u6113228922_A_programmer_intensely_focused_on_their_screen_wher_1769caab-1b49-4705-b502-8e5a4abcec7e_resultat.webp new file mode 100644 index 0000000..e2a3e16 Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_programmer_intensely_focused_on_their_screen_wher_1769caab-1b49-4705-b502-8e5a4abcec7e_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_programmer_intensely_focused_on_their_screen_wher_564d4970-2d6d-4a17-86b4-0d82ebda1ef3_resultat.webp b/app/assets/images/fractol/u6113228922_A_programmer_intensely_focused_on_their_screen_wher_564d4970-2d6d-4a17-86b4-0d82ebda1ef3_resultat.webp new file mode 100644 index 0000000..c9a2cad Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_programmer_intensely_focused_on_their_screen_wher_564d4970-2d6d-4a17-86b4-0d82ebda1ef3_resultat.webp differ diff --git a/app/assets/images/fractol/u6113228922_A_vintage_UNIX_workstation_running_early_fractal_ca_be7748f0-905b-4a0f-b52e-628c3da1c58d_resultat.webp b/app/assets/images/fractol/u6113228922_A_vintage_UNIX_workstation_running_early_fractal_ca_be7748f0-905b-4a0f-b52e-628c3da1c58d_resultat.webp new file mode 100644 index 0000000..11dcd37 Binary files /dev/null and b/app/assets/images/fractol/u6113228922_A_vintage_UNIX_workstation_running_early_fractal_ca_be7748f0-905b-4a0f-b52e-628c3da1c58d_resultat.webp differ diff --git a/app/assets/images/ft_irc/u6113228922_A_futuristic_digital_network_where_floating_nodes_r_8debf194-11c2-4c42-8808-5b3a2ac07d7d_resultat.webp b/app/assets/images/ft_irc/u6113228922_A_futuristic_digital_network_where_floating_nodes_r_8debf194-11c2-4c42-8808-5b3a2ac07d7d_resultat.webp new file mode 100644 index 0000000..fb9c780 Binary files /dev/null and b/app/assets/images/ft_irc/u6113228922_A_futuristic_digital_network_where_floating_nodes_r_8debf194-11c2-4c42-8808-5b3a2ac07d7d_resultat.webp differ diff --git a/app/assets/images/ft_irc/u6113228922_A_futuristic_digital_network_where_floating_nodes_r_9e2e2dd0-4d27-4f76-93b0-3eb0b8ca2c00_resultat.webp b/app/assets/images/ft_irc/u6113228922_A_futuristic_digital_network_where_floating_nodes_r_9e2e2dd0-4d27-4f76-93b0-3eb0b8ca2c00_resultat.webp new file mode 100644 index 0000000..121ef37 Binary files /dev/null and b/app/assets/images/ft_irc/u6113228922_A_futuristic_digital_network_where_floating_nodes_r_9e2e2dd0-4d27-4f76-93b0-3eb0b8ca2c00_resultat.webp differ diff --git a/app/assets/images/ft_irc/u6113228922_A_programmer_working_on_an_IRC_server_implementatio_4a58c3a0-0656-4f7c-99c2-3e9fc719f374_resultat.webp b/app/assets/images/ft_irc/u6113228922_A_programmer_working_on_an_IRC_server_implementatio_4a58c3a0-0656-4f7c-99c2-3e9fc719f374_resultat.webp new file mode 100644 index 0000000..1946e34 Binary files /dev/null and b/app/assets/images/ft_irc/u6113228922_A_programmer_working_on_an_IRC_server_implementatio_4a58c3a0-0656-4f7c-99c2-3e9fc719f374_resultat.webp differ diff --git a/app/assets/images/ft_irc/u6113228922_A_structured_and_modern_infographic_explaining_how__637aeffd-44e7-42b1-8061-db20ee1cb59f_resultat.webp b/app/assets/images/ft_irc/u6113228922_A_structured_and_modern_infographic_explaining_how__637aeffd-44e7-42b1-8061-db20ee1cb59f_resultat.webp new file mode 100644 index 0000000..af3b31c Binary files /dev/null and b/app/assets/images/ft_irc/u6113228922_A_structured_and_modern_infographic_explaining_how__637aeffd-44e7-42b1-8061-db20ee1cb59f_resultat.webp differ diff --git a/app/assets/images/ft_irc/u6113228922_A_structured_and_modern_infographic_explaining_how__8cfb5d09-612d-465f-b27e-bb7a18cc9e7a_resultat.webp b/app/assets/images/ft_irc/u6113228922_A_structured_and_modern_infographic_explaining_how__8cfb5d09-612d-465f-b27e-bb7a18cc9e7a_resultat.webp new file mode 100644 index 0000000..6dc1fbe Binary files /dev/null and b/app/assets/images/ft_irc/u6113228922_A_structured_and_modern_infographic_explaining_how__8cfb5d09-612d-465f-b27e-bb7a18cc9e7a_resultat.webp differ diff --git a/app/assets/images/ft_irc/u6113228922_A_surreal_artistic_representation_of_a_vast_interco_187b957b-dd68-41b2-8b18-3b87f4c36ba0_resultat.webp b/app/assets/images/ft_irc/u6113228922_A_surreal_artistic_representation_of_a_vast_interco_187b957b-dd68-41b2-8b18-3b87f4c36ba0_resultat.webp new file mode 100644 index 0000000..1596475 Binary files /dev/null and b/app/assets/images/ft_irc/u6113228922_A_surreal_artistic_representation_of_a_vast_interco_187b957b-dd68-41b2-8b18-3b87f4c36ba0_resultat.webp differ diff --git a/app/assets/images/ft_irc/u6113228922_A_surreal_artistic_representation_of_a_vast_interco_6e41f6ba-baf3-46b5-9f8d-1dbea49feb27_resultat.webp b/app/assets/images/ft_irc/u6113228922_A_surreal_artistic_representation_of_a_vast_interco_6e41f6ba-baf3-46b5-9f8d-1dbea49feb27_resultat.webp new file mode 100644 index 0000000..ce13773 Binary files /dev/null and b/app/assets/images/ft_irc/u6113228922_A_surreal_artistic_representation_of_a_vast_interco_6e41f6ba-baf3-46b5-9f8d-1dbea49feb27_resultat.webp differ diff --git a/app/assets/images/ft_printf/u6113228922_A_clean_and_modern_infographic-style_illustration_o_1675a516-c18c-4dae-84fb-fdb37f01d443_resultat.webp b/app/assets/images/ft_printf/u6113228922_A_clean_and_modern_infographic-style_illustration_o_1675a516-c18c-4dae-84fb-fdb37f01d443_resultat.webp new file mode 100644 index 0000000..310a4a2 Binary files /dev/null and b/app/assets/images/ft_printf/u6113228922_A_clean_and_modern_infographic-style_illustration_o_1675a516-c18c-4dae-84fb-fdb37f01d443_resultat.webp differ diff --git a/app/assets/images/ft_printf/u6113228922_A_close-up_of_a_programmer_working_intensely_on_a_l_2f0dc442-7c3f-4287-8558-397dd6418c89_resultat.webp b/app/assets/images/ft_printf/u6113228922_A_close-up_of_a_programmer_working_intensely_on_a_l_2f0dc442-7c3f-4287-8558-397dd6418c89_resultat.webp new file mode 100644 index 0000000..07bdc51 Binary files /dev/null and b/app/assets/images/ft_printf/u6113228922_A_close-up_of_a_programmer_working_intensely_on_a_l_2f0dc442-7c3f-4287-8558-397dd6418c89_resultat.webp differ diff --git a/app/assets/images/ft_printf/u6113228922_A_surreal_artistic_representation_of_programming.webp b/app/assets/images/ft_printf/u6113228922_A_surreal_artistic_representation_of_programming.webp new file mode 100644 index 0000000..4ce358d Binary files /dev/null and b/app/assets/images/ft_printf/u6113228922_A_surreal_artistic_representation_of_programming.webp differ diff --git a/app/assets/images/getnextline/u6113228922_A_clean_and_structured_infographic-style_illustrati_ef0af673-e2d7-4daf-bcc2-96de7e754455_resultat.webp b/app/assets/images/getnextline/u6113228922_A_clean_and_structured_infographic-style_illustrati_ef0af673-e2d7-4daf-bcc2-96de7e754455_resultat.webp new file mode 100644 index 0000000..3ce417b Binary files /dev/null and b/app/assets/images/getnextline/u6113228922_A_clean_and_structured_infographic-style_illustrati_ef0af673-e2d7-4daf-bcc2-96de7e754455_resultat.webp differ diff --git a/app/assets/images/getnextline/u6113228922_A_futuristic_digital_interface_visualizing_get_next_b830991b-e5cb-47ed-bf18-431068f94efa_resultat.webp b/app/assets/images/getnextline/u6113228922_A_futuristic_digital_interface_visualizing_get_next_b830991b-e5cb-47ed-bf18-431068f94efa_resultat.webp new file mode 100644 index 0000000..e6cfa5e Binary files /dev/null and b/app/assets/images/getnextline/u6113228922_A_futuristic_digital_interface_visualizing_get_next_b830991b-e5cb-47ed-bf18-431068f94efa_resultat.webp differ diff --git a/app/assets/images/getnextline/u6113228922_A_surreal_artistic_interpretation_of_continuous_fil_9a61b21f-5dd2-4fdc-a828-6506e7979ce9_resultat.webp b/app/assets/images/getnextline/u6113228922_A_surreal_artistic_interpretation_of_continuous_fil_9a61b21f-5dd2-4fdc-a828-6506e7979ce9_resultat.webp new file mode 100644 index 0000000..cd9e515 Binary files /dev/null and b/app/assets/images/getnextline/u6113228922_A_surreal_artistic_interpretation_of_continuous_fil_9a61b21f-5dd2-4fdc-a828-6506e7979ce9_resultat.webp differ diff --git a/app/assets/images/getnextline/u6113228922_A_vintage_CRT_monitor_displaying_C_code_for_get_nex_c6ed1c08-c55c-4494-8eea-adaf227d726b_resultat.webp b/app/assets/images/getnextline/u6113228922_A_vintage_CRT_monitor_displaying_C_code_for_get_nex_c6ed1c08-c55c-4494-8eea-adaf227d726b_resultat.webp new file mode 100644 index 0000000..8587f72 Binary files /dev/null and b/app/assets/images/getnextline/u6113228922_A_vintage_CRT_monitor_displaying_C_code_for_get_nex_c6ed1c08-c55c-4494-8eea-adaf227d726b_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_1c0fd6a8-c843-444c-9915-107a335fe640_resultat.webp b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_1c0fd6a8-c843-444c-9915-107a335fe640_resultat.webp new file mode 100644 index 0000000..6817611 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_1c0fd6a8-c843-444c-9915-107a335fe640_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_208c18c4-f421-4e8b-948b-1325c359c26b_resultat.webp b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_208c18c4-f421-4e8b-948b-1325c359c26b_resultat.webp new file mode 100644 index 0000000..7b4794a Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_208c18c4-f421-4e8b-948b-1325c359c26b_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_fd408b16-1b2d-4261-910a-3abcf61017f8_resultat.webp b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_fd408b16-1b2d-4261-910a-3abcf61017f8_resultat.webp new file mode 100644 index 0000000..6699ab1 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_High-definition_close-up_of_a_Cartesian_XY_3D_print_fd408b16-1b2d-4261-910a-3abcf61017f8_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_26beb1a5-10ec-4b35-a853-586429e8b6f0_resultat.webp b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_26beb1a5-10ec-4b35-a853-586429e8b6f0_resultat.webp new file mode 100644 index 0000000..29d32b7 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_26beb1a5-10ec-4b35-a853-586429e8b6f0_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_406aa2c7-152c-4738-ab04-6391e8153466_resultat.webp b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_406aa2c7-152c-4738-ab04-6391e8153466_resultat.webp new file mode 100644 index 0000000..5aa9c04 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_406aa2c7-152c-4738-ab04-6391e8153466_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_9ec40b6f-6be5-47f4-bf2b-5ff791425366_resultat.webp b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_9ec40b6f-6be5-47f4-bf2b-5ff791425366_resultat.webp new file mode 100644 index 0000000..109e983 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_9ec40b6f-6be5-47f4-bf2b-5ff791425366_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_b832b17e-16cc-4259-b24e-afe14a8e457c_resultat.webp b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_b832b17e-16cc-4259-b24e-afe14a8e457c_resultat.webp new file mode 100644 index 0000000..3f1fc8b Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Hyper-realistic_image_of_a_closed-frame_Cartesian_X_b832b17e-16cc-4259-b24e-afe14a8e457c_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_b3bafc48-eac9-45ff-8d7f-46b65c3213a1_resultat.webp b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_b3bafc48-eac9-45ff-8d7f-46b65c3213a1_resultat.webp new file mode 100644 index 0000000..76c35ae Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_b3bafc48-eac9-45ff-8d7f-46b65c3213a1_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_d38604e1-d943-4995-8875-1c1b59cda2e9_resultat.webp b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_d38604e1-d943-4995-8875-1c1b59cda2e9_resultat.webp new file mode 100644 index 0000000..158ad54 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_d38604e1-d943-4995-8875-1c1b59cda2e9_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_e1d75004-dc87-4df5-b508-d938ed6771cd_resultat.webp b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_e1d75004-dc87-4df5-b508-d938ed6771cd_resultat.webp new file mode 100644 index 0000000..d280be3 Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Ultra-realistic_3D_render_of_an_open-frame_Cartesia_e1d75004-dc87-4df5-b508-d938ed6771cd_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_1b2b2bf6-ca71-4959-ba99-06b626409f3f_resultat.webp b/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_1b2b2bf6-ca71-4959-ba99-06b626409f3f_resultat.webp new file mode 100644 index 0000000..38db27c Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_1b2b2bf6-ca71-4959-ba99-06b626409f3f_resultat.webp differ diff --git a/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_e79cd55b-9d72-4d95-bb1d-1fb9c6d99dcd_resultat.webp b/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_e79cd55b-9d72-4d95-bb1d-1fb9c6d99dcd_resultat.webp new file mode 100644 index 0000000..5ee015c Binary files /dev/null and b/app/assets/images/impression3d/u6113228922_Wide-angle_view_of_a_professional_FDM_3D_printing_f_e79cd55b-9d72-4d95-bb1d-1fb9c6d99dcd_resultat.webp differ diff --git a/app/assets/images/impressions/agencement2_resultat.webp b/app/assets/images/impressions/agencement2_resultat.webp new file mode 100644 index 0000000..02eb64f Binary files /dev/null and b/app/assets/images/impressions/agencement2_resultat.webp differ diff --git a/app/assets/images/impressions/agencement3_resultat.webp b/app/assets/images/impressions/agencement3_resultat.webp new file mode 100644 index 0000000..7dbcb26 Binary files /dev/null and b/app/assets/images/impressions/agencement3_resultat.webp differ diff --git a/app/assets/images/impressions/agencement_resultat.webp b/app/assets/images/impressions/agencement_resultat.webp new file mode 100644 index 0000000..d4b0ed3 Binary files /dev/null and b/app/assets/images/impressions/agencement_resultat.webp differ diff --git a/app/assets/images/impressions/casque2_resultat.webp b/app/assets/images/impressions/casque2_resultat.webp new file mode 100644 index 0000000..d1a8b8b Binary files /dev/null and b/app/assets/images/impressions/casque2_resultat.webp differ diff --git a/app/assets/images/impressions/casque3_resultat.webp b/app/assets/images/impressions/casque3_resultat.webp new file mode 100644 index 0000000..f1969e6 Binary files /dev/null and b/app/assets/images/impressions/casque3_resultat.webp differ diff --git a/app/assets/images/impressions/casque4_resultat.webp b/app/assets/images/impressions/casque4_resultat.webp new file mode 100644 index 0000000..fbcfc63 Binary files /dev/null and b/app/assets/images/impressions/casque4_resultat.webp differ diff --git a/app/assets/images/impressions/casque5_resultat.webp b/app/assets/images/impressions/casque5_resultat.webp new file mode 100644 index 0000000..f54cbbb Binary files /dev/null and b/app/assets/images/impressions/casque5_resultat.webp differ diff --git a/app/assets/images/impressions/cybersabre_resultat.webp b/app/assets/images/impressions/cybersabre_resultat.webp new file mode 100644 index 0000000..f76d541 Binary files /dev/null and b/app/assets/images/impressions/cybersabre_resultat.webp differ diff --git a/app/assets/images/impressions/gravure_resultat.webp b/app/assets/images/impressions/gravure_resultat.webp new file mode 100644 index 0000000..e5994ad Binary files /dev/null and b/app/assets/images/impressions/gravure_resultat.webp differ diff --git a/app/assets/images/impressions/gravurevegeta_resultat.webp b/app/assets/images/impressions/gravurevegeta_resultat.webp new file mode 100644 index 0000000..d597fbd Binary files /dev/null and b/app/assets/images/impressions/gravurevegeta_resultat.webp differ diff --git a/app/assets/images/impressions/hautbureau2_resultat.webp b/app/assets/images/impressions/hautbureau2_resultat.webp new file mode 100644 index 0000000..204f4fc Binary files /dev/null and b/app/assets/images/impressions/hautbureau2_resultat.webp differ diff --git a/app/assets/images/impressions/hautbureau3_resultat.webp b/app/assets/images/impressions/hautbureau3_resultat.webp new file mode 100644 index 0000000..25f9952 Binary files /dev/null and b/app/assets/images/impressions/hautbureau3_resultat.webp differ diff --git a/app/assets/images/impressions/hautbureau_resultat.webp b/app/assets/images/impressions/hautbureau_resultat.webp new file mode 100644 index 0000000..43c9c7e Binary files /dev/null and b/app/assets/images/impressions/hautbureau_resultat.webp differ diff --git a/app/assets/images/impressions/lampdeath_resultat.webp b/app/assets/images/impressions/lampdeath_resultat.webp new file mode 100644 index 0000000..d93060f Binary files /dev/null and b/app/assets/images/impressions/lampdeath_resultat.webp differ diff --git a/app/assets/images/impressions/pc_resultat.webp b/app/assets/images/impressions/pc_resultat.webp new file mode 100644 index 0000000..678cc36 Binary files /dev/null and b/app/assets/images/impressions/pc_resultat.webp differ diff --git a/app/assets/images/impressions/ring_resultat.webp b/app/assets/images/impressions/ring_resultat.webp new file mode 100644 index 0000000..ea5e851 Binary files /dev/null and b/app/assets/images/impressions/ring_resultat.webp differ diff --git a/app/assets/images/impressions/sauron_resultat.webp b/app/assets/images/impressions/sauron_resultat.webp new file mode 100644 index 0000000..b807049 Binary files /dev/null and b/app/assets/images/impressions/sauron_resultat.webp differ diff --git a/app/assets/images/impressions/supportcasque_resultat.webp b/app/assets/images/impressions/supportcasque_resultat.webp new file mode 100644 index 0000000..2c0436a Binary files /dev/null and b/app/assets/images/impressions/supportcasque_resultat.webp differ diff --git a/app/assets/images/impressions/vase2_resultat.webp b/app/assets/images/impressions/vase2_resultat.webp new file mode 100644 index 0000000..9f67025 Binary files /dev/null and b/app/assets/images/impressions/vase2_resultat.webp differ diff --git a/app/assets/images/impressions/vase_resultat.webp b/app/assets/images/impressions/vase_resultat.webp new file mode 100644 index 0000000..5a68215 Binary files /dev/null and b/app/assets/images/impressions/vase_resultat.webp differ diff --git a/app/assets/images/imprimante/3D-printer-Alfawise-U30-perspective_resultat.webp b/app/assets/images/imprimante/3D-printer-Alfawise-U30-perspective_resultat.webp new file mode 100644 index 0000000..6648aa9 Binary files /dev/null and b/app/assets/images/imprimante/3D-printer-Alfawise-U30-perspective_resultat.webp differ diff --git a/app/assets/images/imprimante/sidewinderx2_resultat.webp b/app/assets/images/imprimante/sidewinderx2_resultat.webp new file mode 100644 index 0000000..c7d213d Binary files /dev/null and b/app/assets/images/imprimante/sidewinderx2_resultat.webp differ diff --git a/app/assets/images/imprimante/x1c2_resultat.webp b/app/assets/images/imprimante/x1c2_resultat.webp new file mode 100644 index 0000000..d9ed121 Binary files /dev/null and b/app/assets/images/imprimante/x1c2_resultat.webp differ diff --git a/app/assets/images/imprimante/x1c3_resultat.webp b/app/assets/images/imprimante/x1c3_resultat.webp new file mode 100644 index 0000000..db1fba4 Binary files /dev/null and b/app/assets/images/imprimante/x1c3_resultat.webp differ diff --git a/app/assets/images/imprimante/x1c4_resultat.webp b/app/assets/images/imprimante/x1c4_resultat.webp new file mode 100644 index 0000000..ea935c8 Binary files /dev/null and b/app/assets/images/imprimante/x1c4_resultat.webp differ diff --git a/app/assets/images/imprimante/x1c5_resultat.webp b/app/assets/images/imprimante/x1c5_resultat.webp new file mode 100644 index 0000000..b8c43d5 Binary files /dev/null and b/app/assets/images/imprimante/x1c5_resultat.webp differ diff --git a/app/assets/images/imprimante/x1c_resultat.webp b/app/assets/images/imprimante/x1c_resultat.webp new file mode 100644 index 0000000..b5f2f29 Binary files /dev/null and b/app/assets/images/imprimante/x1c_resultat.webp differ diff --git a/app/assets/images/imprimante/x1cseche_resultat.webp b/app/assets/images/imprimante/x1cseche_resultat.webp new file mode 100644 index 0000000..99b6013 Binary files /dev/null and b/app/assets/images/imprimante/x1cseche_resultat.webp differ diff --git a/app/assets/images/inception/u6113228922_A_futuristic_data_network_where_glowing_cube-shaped_97c64ba0-443b-43d7-9a6a-edb4134720bc_resultat.webp b/app/assets/images/inception/u6113228922_A_futuristic_data_network_where_glowing_cube-shaped_97c64ba0-443b-43d7-9a6a-edb4134720bc_resultat.webp new file mode 100644 index 0000000..f3a95fa Binary files /dev/null and b/app/assets/images/inception/u6113228922_A_futuristic_data_network_where_glowing_cube-shaped_97c64ba0-443b-43d7-9a6a-edb4134720bc_resultat.webp differ diff --git a/app/assets/images/inception/u6113228922_A_structured_and_modern_infographic_illustrating_a__b7b3508c-f03b-464e-ba95-f7a5ea3d15e9_resultat.webp b/app/assets/images/inception/u6113228922_A_structured_and_modern_infographic_illustrating_a__b7b3508c-f03b-464e-ba95-f7a5ea3d15e9_resultat.webp new file mode 100644 index 0000000..af620fa Binary files /dev/null and b/app/assets/images/inception/u6113228922_A_structured_and_modern_infographic_illustrating_a__b7b3508c-f03b-464e-ba95-f7a5ea3d15e9_resultat.webp differ diff --git a/app/assets/images/inception/u6113228922_A_surreal_artistic_interpretation_of_containerized__12f40eb4-9cde-4e0f-9b4f-b80ac3e48fb2_resultat.webp b/app/assets/images/inception/u6113228922_A_surreal_artistic_interpretation_of_containerized__12f40eb4-9cde-4e0f-9b4f-b80ac3e48fb2_resultat.webp new file mode 100644 index 0000000..428adcb Binary files /dev/null and b/app/assets/images/inception/u6113228922_A_surreal_artistic_interpretation_of_containerized__12f40eb4-9cde-4e0f-9b4f-b80ac3e48fb2_resultat.webp differ diff --git a/app/assets/images/inception/u6113228922_A_system_administrator_managing_a_Docker-based_infr_9a044f13-e557-4497-9dcb-ba607d56fa92_resultat.webp b/app/assets/images/inception/u6113228922_A_system_administrator_managing_a_Docker-based_infr_9a044f13-e557-4497-9dcb-ba607d56fa92_resultat.webp new file mode 100644 index 0000000..e9ad271 Binary files /dev/null and b/app/assets/images/inception/u6113228922_A_system_administrator_managing_a_Docker-based_infr_9a044f13-e557-4497-9dcb-ba607d56fa92_resultat.webp differ diff --git a/app/assets/images/inception/u6113228922_A_vintage_UNIX_workstation_running_early_virtualiza_bd49307b-1e68-4cf5-b648-12663e289b6b_resultat.webp b/app/assets/images/inception/u6113228922_A_vintage_UNIX_workstation_running_early_virtualiza_bd49307b-1e68-4cf5-b648-12663e289b6b_resultat.webp new file mode 100644 index 0000000..23a0325 Binary files /dev/null and b/app/assets/images/inception/u6113228922_A_vintage_UNIX_workstation_running_early_virtualiza_bd49307b-1e68-4cf5-b648-12663e289b6b_resultat.webp differ diff --git a/app/assets/images/libft/u6113228922_Un_manuel_digital_flottant_intitul_Libft.a_entour_d_53f5c978-93f4-471e-8f4d-5e091e6d26bb_resultat.webp b/app/assets/images/libft/u6113228922_Un_manuel_digital_flottant_intitul_Libft.a_entour_d_53f5c978-93f4-471e-8f4d-5e091e6d26bb_resultat.webp new file mode 100644 index 0000000..68e6b76 Binary files /dev/null and b/app/assets/images/libft/u6113228922_Un_manuel_digital_flottant_intitul_Libft.a_entour_d_53f5c978-93f4-471e-8f4d-5e091e6d26bb_resultat.webp differ diff --git a/app/assets/images/libft/u6113228922_Une_mtaphore_visuelle_de_la_gestion_de_la_mmoire_en_732bee2f-ddac-44ab-aaea-38c172800093_resultat.webp b/app/assets/images/libft/u6113228922_Une_mtaphore_visuelle_de_la_gestion_de_la_mmoire_en_732bee2f-ddac-44ab-aaea-38c172800093_resultat.webp new file mode 100644 index 0000000..7913f4d Binary files /dev/null and b/app/assets/images/libft/u6113228922_Une_mtaphore_visuelle_de_la_gestion_de_la_mmoire_en_732bee2f-ddac-44ab-aaea-38c172800093_resultat.webp differ diff --git a/app/assets/images/libft/u6113228922_Une_mtaphore_visuelle_de_la_gestion_de_la_mmoire_en_9b6996e5-51e5-4129-bd80-de06b0f2898e_resultat.webp b/app/assets/images/libft/u6113228922_Une_mtaphore_visuelle_de_la_gestion_de_la_mmoire_en_9b6996e5-51e5-4129-bd80-de06b0f2898e_resultat.webp new file mode 100644 index 0000000..a08edf5 Binary files /dev/null and b/app/assets/images/libft/u6113228922_Une_mtaphore_visuelle_de_la_gestion_de_la_mmoire_en_9b6996e5-51e5-4129-bd80-de06b0f2898e_resultat.webp differ diff --git a/app/assets/images/libft/u6113228922_Une_visualisation_artistique_dune_structure_de_list_66986c18-6015-4bb9-9ca5-f7b8a5992c1e_resultat.webp b/app/assets/images/libft/u6113228922_Une_visualisation_artistique_dune_structure_de_list_66986c18-6015-4bb9-9ca5-f7b8a5992c1e_resultat.webp new file mode 100644 index 0000000..ed4ed88 Binary files /dev/null and b/app/assets/images/libft/u6113228922_Une_visualisation_artistique_dune_structure_de_list_66986c18-6015-4bb9-9ca5-f7b8a5992c1e_resultat.webp differ diff --git a/app/assets/images/minishell/u6113228922_A_futuristic_AI_system_visualized_as_a_glowing_cybe_2545ce40-e410-4b52-b157-2511b656cd07_resultat.webp b/app/assets/images/minishell/u6113228922_A_futuristic_AI_system_visualized_as_a_glowing_cybe_2545ce40-e410-4b52-b157-2511b656cd07_resultat.webp new file mode 100644 index 0000000..8daafd3 Binary files /dev/null and b/app/assets/images/minishell/u6113228922_A_futuristic_AI_system_visualized_as_a_glowing_cybe_2545ce40-e410-4b52-b157-2511b656cd07_resultat.webp differ diff --git a/app/assets/images/minishell/u6113228922_A_futuristic_AI_system_visualized_as_a_glowing_cybe_852a3e25-acde-4b9e-a648-5ffedb56446b_resultat.webp b/app/assets/images/minishell/u6113228922_A_futuristic_AI_system_visualized_as_a_glowing_cybe_852a3e25-acde-4b9e-a648-5ffedb56446b_resultat.webp new file mode 100644 index 0000000..387a908 Binary files /dev/null and b/app/assets/images/minishell/u6113228922_A_futuristic_AI_system_visualized_as_a_glowing_cybe_852a3e25-acde-4b9e-a648-5ffedb56446b_resultat.webp differ diff --git a/app/assets/images/minishell/u6113228922_A_programmer_intensely_focused_on_a_terminal_debugg_dd53696b-5a5c-41a2-9ed2-26df205f416e_resultat.webp b/app/assets/images/minishell/u6113228922_A_programmer_intensely_focused_on_a_terminal_debugg_dd53696b-5a5c-41a2-9ed2-26df205f416e_resultat.webp new file mode 100644 index 0000000..15065c1 Binary files /dev/null and b/app/assets/images/minishell/u6113228922_A_programmer_intensely_focused_on_a_terminal_debugg_dd53696b-5a5c-41a2-9ed2-26df205f416e_resultat.webp differ diff --git a/app/assets/images/minishell/u6113228922_A_structured_and_modern_infographic_visually_explai_0785ccb8-5a4e-4441-ae6b-bb72d78e4367_resultat.webp b/app/assets/images/minishell/u6113228922_A_structured_and_modern_infographic_visually_explai_0785ccb8-5a4e-4441-ae6b-bb72d78e4367_resultat.webp new file mode 100644 index 0000000..849fd73 Binary files /dev/null and b/app/assets/images/minishell/u6113228922_A_structured_and_modern_infographic_visually_explai_0785ccb8-5a4e-4441-ae6b-bb72d78e4367_resultat.webp differ diff --git a/app/assets/images/minishell/u6113228922_A_surreal_artistic_interpretation_of_an_interactive_35a27eeb-7fe5-41c6-83f7-e3ad3519b701_resultat.webp b/app/assets/images/minishell/u6113228922_A_surreal_artistic_interpretation_of_an_interactive_35a27eeb-7fe5-41c6-83f7-e3ad3519b701_resultat.webp new file mode 100644 index 0000000..48adf0f Binary files /dev/null and b/app/assets/images/minishell/u6113228922_A_surreal_artistic_interpretation_of_an_interactive_35a27eeb-7fe5-41c6-83f7-e3ad3519b701_resultat.webp differ diff --git a/app/assets/images/minishell/u6113228922_A_surreal_artistic_interpretation_of_an_interactive_429b166a-018d-48bb-abea-d7da3e66b547_resultat.webp b/app/assets/images/minishell/u6113228922_A_surreal_artistic_interpretation_of_an_interactive_429b166a-018d-48bb-abea-d7da3e66b547_resultat.webp new file mode 100644 index 0000000..c12d0dc Binary files /dev/null and b/app/assets/images/minishell/u6113228922_A_surreal_artistic_interpretation_of_an_interactive_429b166a-018d-48bb-abea-d7da3e66b547_resultat.webp differ diff --git a/app/assets/images/minishell/u6113228922_A_surreal_artistic_interpretation_of_an_interactive_a65577b3-30b9-4e7c-9dd5-3615867dbcef_resultat.webp b/app/assets/images/minishell/u6113228922_A_surreal_artistic_interpretation_of_an_interactive_a65577b3-30b9-4e7c-9dd5-3615867dbcef_resultat.webp new file mode 100644 index 0000000..b00a6e7 Binary files /dev/null and b/app/assets/images/minishell/u6113228922_A_surreal_artistic_interpretation_of_an_interactive_a65577b3-30b9-4e7c-9dd5-3615867dbcef_resultat.webp differ diff --git a/app/assets/images/minishell/u6113228922_A_vintage_UNIX_terminal_with_a_developer_testing_th_2b6c9389-db62-44f5-b368-8e8e4a796a82_resultat.webp b/app/assets/images/minishell/u6113228922_A_vintage_UNIX_terminal_with_a_developer_testing_th_2b6c9389-db62-44f5-b368-8e8e4a796a82_resultat.webp new file mode 100644 index 0000000..7616d01 Binary files /dev/null and b/app/assets/images/minishell/u6113228922_A_vintage_UNIX_terminal_with_a_developer_testing_th_2b6c9389-db62-44f5-b368-8e8e4a796a82_resultat.webp differ diff --git a/app/assets/images/minitalk/u6113228922_A_clean_and_structured_infographic_illustrating_how_05a70f91-d701-4a6c-975e-a528f1da9b26_resultat.webp b/app/assets/images/minitalk/u6113228922_A_clean_and_structured_infographic_illustrating_how_05a70f91-d701-4a6c-975e-a528f1da9b26_resultat.webp new file mode 100644 index 0000000..d640c20 Binary files /dev/null and b/app/assets/images/minitalk/u6113228922_A_clean_and_structured_infographic_illustrating_how_05a70f91-d701-4a6c-975e-a528f1da9b26_resultat.webp differ diff --git a/app/assets/images/minitalk/u6113228922_A_futuristic_representation_of_inter-process_commun_8d14af5d-0def-43f9-8ea1-21acf143a6b1_resultat.webp b/app/assets/images/minitalk/u6113228922_A_futuristic_representation_of_inter-process_commun_8d14af5d-0def-43f9-8ea1-21acf143a6b1_resultat.webp new file mode 100644 index 0000000..e3d58d3 Binary files /dev/null and b/app/assets/images/minitalk/u6113228922_A_futuristic_representation_of_inter-process_commun_8d14af5d-0def-43f9-8ea1-21acf143a6b1_resultat.webp differ diff --git a/app/assets/images/minitalk/u6113228922_A_programmer_debugging_an_IPC_system_in_C_carefully_ad4cd64e-eaf2-4449-b108-3297ff258ddb_resultat.webp b/app/assets/images/minitalk/u6113228922_A_programmer_debugging_an_IPC_system_in_C_carefully_ad4cd64e-eaf2-4449-b108-3297ff258ddb_resultat.webp new file mode 100644 index 0000000..765fa98 Binary files /dev/null and b/app/assets/images/minitalk/u6113228922_A_programmer_debugging_an_IPC_system_in_C_carefully_ad4cd64e-eaf2-4449-b108-3297ff258ddb_resultat.webp differ diff --git a/app/assets/images/minitalk/u6113228922_A_surreal_artistic_representation_of_information_tr_4599be0c-4c39-42d1-9a5f-0c692275683f_resultat.webp b/app/assets/images/minitalk/u6113228922_A_surreal_artistic_representation_of_information_tr_4599be0c-4c39-42d1-9a5f-0c692275683f_resultat.webp new file mode 100644 index 0000000..62f7c98 Binary files /dev/null and b/app/assets/images/minitalk/u6113228922_A_surreal_artistic_representation_of_information_tr_4599be0c-4c39-42d1-9a5f-0c692275683f_resultat.webp differ diff --git a/app/assets/images/netpractice/u6113228922_A_computer_science_student_working_on_IP_addressing_56512e96-0caa-4e5f-96f2-3799e4d60833_resultat.webp b/app/assets/images/netpractice/u6113228922_A_computer_science_student_working_on_IP_addressing_56512e96-0caa-4e5f-96f2-3799e4d60833_resultat.webp new file mode 100644 index 0000000..387e97b Binary files /dev/null and b/app/assets/images/netpractice/u6113228922_A_computer_science_student_working_on_IP_addressing_56512e96-0caa-4e5f-96f2-3799e4d60833_resultat.webp differ diff --git a/app/assets/images/netpractice/u6113228922_A_futuristic_visualization_of_a_vast_interconnected_80b69923-aab4-4071-8e44-e155b841e3c8_resultat.webp b/app/assets/images/netpractice/u6113228922_A_futuristic_visualization_of_a_vast_interconnected_80b69923-aab4-4071-8e44-e155b841e3c8_resultat.webp new file mode 100644 index 0000000..4a679d7 Binary files /dev/null and b/app/assets/images/netpractice/u6113228922_A_futuristic_visualization_of_a_vast_interconnected_80b69923-aab4-4071-8e44-e155b841e3c8_resultat.webp differ diff --git a/app/assets/images/netpractice/u6113228922_A_structured_and_modern_infographic_illustrating_su_b740267f-5380-459a-b8e3-469d9bd7f575_resultat.webp b/app/assets/images/netpractice/u6113228922_A_structured_and_modern_infographic_illustrating_su_b740267f-5380-459a-b8e3-469d9bd7f575_resultat.webp new file mode 100644 index 0000000..aaa9e46 Binary files /dev/null and b/app/assets/images/netpractice/u6113228922_A_structured_and_modern_infographic_illustrating_su_b740267f-5380-459a-b8e3-469d9bd7f575_resultat.webp differ diff --git a/app/assets/images/netpractice/u6113228922_A_structured_and_modern_infographic_illustrating_su_f70cd031-c0d1-44a4-8228-b7cd0f45c4d3_resultat.webp b/app/assets/images/netpractice/u6113228922_A_structured_and_modern_infographic_illustrating_su_f70cd031-c0d1-44a4-8228-b7cd0f45c4d3_resultat.webp new file mode 100644 index 0000000..46f7a54 Binary files /dev/null and b/app/assets/images/netpractice/u6113228922_A_structured_and_modern_infographic_illustrating_su_f70cd031-c0d1-44a4-8228-b7cd0f45c4d3_resultat.webp differ diff --git a/app/assets/images/netpractice/u6113228922_A_surreal_representation_of_computer_networks_where_94af9ca3-0c9b-4011-b93b-241774a361c4_resultat.webp b/app/assets/images/netpractice/u6113228922_A_surreal_representation_of_computer_networks_where_94af9ca3-0c9b-4011-b93b-241774a361c4_resultat.webp new file mode 100644 index 0000000..75de460 Binary files /dev/null and b/app/assets/images/netpractice/u6113228922_A_surreal_representation_of_computer_networks_where_94af9ca3-0c9b-4011-b93b-241774a361c4_resultat.webp differ diff --git a/app/assets/images/netpractice/u6113228922_A_surreal_representation_of_computer_networks_where_998a999c-6ce9-4423-bc6f-6a397fb125d0_resultat.webp b/app/assets/images/netpractice/u6113228922_A_surreal_representation_of_computer_networks_where_998a999c-6ce9-4423-bc6f-6a397fb125d0_resultat.webp new file mode 100644 index 0000000..b2110e7 Binary files /dev/null and b/app/assets/images/netpractice/u6113228922_A_surreal_representation_of_computer_networks_where_998a999c-6ce9-4423-bc6f-6a397fb125d0_resultat.webp differ diff --git a/app/assets/images/philosophers/u6113228922_A_futuristic_AI-driven_simulation_where_five_digita_1cde60bb-bdc1-4975-9f9c-22f032012c2b_resultat.webp b/app/assets/images/philosophers/u6113228922_A_futuristic_AI-driven_simulation_where_five_digita_1cde60bb-bdc1-4975-9f9c-22f032012c2b_resultat.webp new file mode 100644 index 0000000..7b74d81 Binary files /dev/null and b/app/assets/images/philosophers/u6113228922_A_futuristic_AI-driven_simulation_where_five_digita_1cde60bb-bdc1-4975-9f9c-22f032012c2b_resultat.webp differ diff --git a/app/assets/images/philosophers/u6113228922_A_programmer_working_on_the_Philosopher_project_car_bd374986-02e5-4b33-a5f6-cb8cef569718_resultat.webp b/app/assets/images/philosophers/u6113228922_A_programmer_working_on_the_Philosopher_project_car_bd374986-02e5-4b33-a5f6-cb8cef569718_resultat.webp new file mode 100644 index 0000000..ecbb6e6 Binary files /dev/null and b/app/assets/images/philosophers/u6113228922_A_programmer_working_on_the_Philosopher_project_car_bd374986-02e5-4b33-a5f6-cb8cef569718_resultat.webp differ diff --git a/app/assets/images/philosophers/u6113228922_A_structured_and_modern_infographic_illustrating_th_4b9c85fd-93d0-47e0-acdf-36b6235e9a89_resultat.webp b/app/assets/images/philosophers/u6113228922_A_structured_and_modern_infographic_illustrating_th_4b9c85fd-93d0-47e0-acdf-36b6235e9a89_resultat.webp new file mode 100644 index 0000000..90eafe5 Binary files /dev/null and b/app/assets/images/philosophers/u6113228922_A_structured_and_modern_infographic_illustrating_th_4b9c85fd-93d0-47e0-acdf-36b6235e9a89_resultat.webp differ diff --git a/app/assets/images/philosophers/u6113228922_A_structured_and_modern_infographic_illustrating_th_9d555a35-f356-4f84-939a-4f1dd494394a_resultat.webp b/app/assets/images/philosophers/u6113228922_A_structured_and_modern_infographic_illustrating_th_9d555a35-f356-4f84-939a-4f1dd494394a_resultat.webp new file mode 100644 index 0000000..6b59eea Binary files /dev/null and b/app/assets/images/philosophers/u6113228922_A_structured_and_modern_infographic_illustrating_th_9d555a35-f356-4f84-939a-4f1dd494394a_resultat.webp differ diff --git a/app/assets/images/philosophers/u6113228922_A_structured_and_modern_infographic_illustrating_th_9e894229-ac86-402d-adcb-5a3f6bc80ccb_resultat.webp b/app/assets/images/philosophers/u6113228922_A_structured_and_modern_infographic_illustrating_th_9e894229-ac86-402d-adcb-5a3f6bc80ccb_resultat.webp new file mode 100644 index 0000000..b401d47 Binary files /dev/null and b/app/assets/images/philosophers/u6113228922_A_structured_and_modern_infographic_illustrating_th_9e894229-ac86-402d-adcb-5a3f6bc80ccb_resultat.webp differ diff --git a/app/assets/images/philosophers/u6113228922_A_surreal_representation_of_the_dining_philosophers_77892115-bf85-45b3-8dda-d08c4efcd332_resultat.webp b/app/assets/images/philosophers/u6113228922_A_surreal_representation_of_the_dining_philosophers_77892115-bf85-45b3-8dda-d08c4efcd332_resultat.webp new file mode 100644 index 0000000..d815faa Binary files /dev/null and b/app/assets/images/philosophers/u6113228922_A_surreal_representation_of_the_dining_philosophers_77892115-bf85-45b3-8dda-d08c4efcd332_resultat.webp differ diff --git a/app/assets/images/philosophers/u6113228922_A_surreal_representation_of_the_dining_philosophers_f0b63bb4-cebe-455c-9ecc-15e097fa8862_resultat.webp b/app/assets/images/philosophers/u6113228922_A_surreal_representation_of_the_dining_philosophers_f0b63bb4-cebe-455c-9ecc-15e097fa8862_resultat.webp new file mode 100644 index 0000000..8c64d61 Binary files /dev/null and b/app/assets/images/philosophers/u6113228922_A_surreal_representation_of_the_dining_philosophers_f0b63bb4-cebe-455c-9ecc-15e097fa8862_resultat.webp differ diff --git a/app/assets/images/photo2_resultat.webp b/app/assets/images/photo2_resultat.webp new file mode 100644 index 0000000..a789759 Binary files /dev/null and b/app/assets/images/photo2_resultat.webp differ diff --git a/app/assets/images/photo3_resultat.webp b/app/assets/images/photo3_resultat.webp new file mode 100644 index 0000000..7936943 Binary files /dev/null and b/app/assets/images/photo3_resultat.webp differ diff --git a/app/assets/images/photo_resultat.webp b/app/assets/images/photo_resultat.webp new file mode 100644 index 0000000..5932078 Binary files /dev/null and b/app/assets/images/photo_resultat.webp differ diff --git a/app/assets/images/photoprofil.jpg b/app/assets/images/photoprofil.jpg new file mode 100644 index 0000000..c8cb711 Binary files /dev/null and b/app/assets/images/photoprofil.jpg differ diff --git a/app/assets/images/photoprofil2.jpg b/app/assets/images/photoprofil2.jpg new file mode 100644 index 0000000..1ab838e Binary files /dev/null and b/app/assets/images/photoprofil2.jpg differ diff --git a/app/assets/images/photoschool/20230203_095626_resultat.webp b/app/assets/images/photoschool/20230203_095626_resultat.webp new file mode 100644 index 0000000..26b7b84 Binary files /dev/null and b/app/assets/images/photoschool/20230203_095626_resultat.webp differ diff --git a/app/assets/images/photoschool/20230406_112330_resultat.webp b/app/assets/images/photoschool/20230406_112330_resultat.webp new file mode 100644 index 0000000..b73c9ee Binary files /dev/null and b/app/assets/images/photoschool/20230406_112330_resultat.webp differ diff --git a/app/assets/images/photoschool/20230406_112520_resultat.webp b/app/assets/images/photoschool/20230406_112520_resultat.webp new file mode 100644 index 0000000..2f0bdb9 Binary files /dev/null and b/app/assets/images/photoschool/20230406_112520_resultat.webp differ diff --git a/app/assets/images/photoschool/20230406_112536_resultat.webp b/app/assets/images/photoschool/20230406_112536_resultat.webp new file mode 100644 index 0000000..aa25977 Binary files /dev/null and b/app/assets/images/photoschool/20230406_112536_resultat.webp differ diff --git a/app/assets/images/photoschool/photoecole_resultat.webp b/app/assets/images/photoschool/photoecole_resultat.webp new file mode 100644 index 0000000..a201e5e Binary files /dev/null and b/app/assets/images/photoschool/photoecole_resultat.webp differ diff --git a/app/assets/images/photosite/Capture d'écran 2025-02-11 175041_resultat.webp b/app/assets/images/photosite/Capture d'écran 2025-02-11 175041_resultat.webp new file mode 100644 index 0000000..84b42c1 Binary files /dev/null and b/app/assets/images/photosite/Capture d'écran 2025-02-11 175041_resultat.webp differ diff --git a/app/assets/images/photosite/Capture d'écran 2025-02-11 175121_resultat.webp b/app/assets/images/photosite/Capture d'écran 2025-02-11 175121_resultat.webp new file mode 100644 index 0000000..ba75158 Binary files /dev/null and b/app/assets/images/photosite/Capture d'écran 2025-02-11 175121_resultat.webp differ diff --git a/app/assets/images/photosite/Capture d'écran 2025-02-11 175208_resultat.webp b/app/assets/images/photosite/Capture d'écran 2025-02-11 175208_resultat.webp new file mode 100644 index 0000000..c26effd Binary files /dev/null and b/app/assets/images/photosite/Capture d'écran 2025-02-11 175208_resultat.webp differ diff --git a/app/assets/images/pushswap/u6113228922_A_clean_and_modern_infographic_explaining_push_swap_565e80ec-90a0-4cad-83ff-6c797cbf0c1e_resultat.webp b/app/assets/images/pushswap/u6113228922_A_clean_and_modern_infographic_explaining_push_swap_565e80ec-90a0-4cad-83ff-6c797cbf0c1e_resultat.webp new file mode 100644 index 0000000..4abe7d4 Binary files /dev/null and b/app/assets/images/pushswap/u6113228922_A_clean_and_modern_infographic_explaining_push_swap_565e80ec-90a0-4cad-83ff-6c797cbf0c1e_resultat.webp differ diff --git a/app/assets/images/pushswap/u6113228922_A_futuristic_data_flow_representation_of_the_push_s_309fec3a-15fc-44c2-9daa-f77b63acc44c_resultat.webp b/app/assets/images/pushswap/u6113228922_A_futuristic_data_flow_representation_of_the_push_s_309fec3a-15fc-44c2-9daa-f77b63acc44c_resultat.webp new file mode 100644 index 0000000..b08c59e Binary files /dev/null and b/app/assets/images/pushswap/u6113228922_A_futuristic_data_flow_representation_of_the_push_s_309fec3a-15fc-44c2-9daa-f77b63acc44c_resultat.webp differ diff --git a/app/assets/images/pushswap/u6113228922_A_programmer_deeply_focused_on_optimizing_the_push__1c5d86e7-193c-4fa4-8cbc-84e82304ae84_resultat.webp b/app/assets/images/pushswap/u6113228922_A_programmer_deeply_focused_on_optimizing_the_push__1c5d86e7-193c-4fa4-8cbc-84e82304ae84_resultat.webp new file mode 100644 index 0000000..36619be Binary files /dev/null and b/app/assets/images/pushswap/u6113228922_A_programmer_deeply_focused_on_optimizing_the_push__1c5d86e7-193c-4fa4-8cbc-84e82304ae84_resultat.webp differ diff --git a/app/assets/images/pushswap/u6113228922_A_surreal_artistic_representation_of_sorting_where__521a89b6-0d4d-4e16-9de8-b610ea91dd55_resultat.webp b/app/assets/images/pushswap/u6113228922_A_surreal_artistic_representation_of_sorting_where__521a89b6-0d4d-4e16-9de8-b610ea91dd55_resultat.webp new file mode 100644 index 0000000..694608d Binary files /dev/null and b/app/assets/images/pushswap/u6113228922_A_surreal_artistic_representation_of_sorting_where__521a89b6-0d4d-4e16-9de8-b610ea91dd55_resultat.webp differ diff --git a/app/assets/images/pushswap/u6113228922_A_vintage_computer_screen_displaying_an_animated_vi_3a8bc28e-1c71-46b4-ac5c-dabbdc268755_resultat.webp b/app/assets/images/pushswap/u6113228922_A_vintage_computer_screen_displaying_an_animated_vi_3a8bc28e-1c71-46b4-ac5c-dabbdc268755_resultat.webp new file mode 100644 index 0000000..64c3c00 Binary files /dev/null and b/app/assets/images/pushswap/u6113228922_A_vintage_computer_screen_displaying_an_animated_vi_3a8bc28e-1c71-46b4-ac5c-dabbdc268755_resultat.webp differ diff --git a/app/assets/images/transcenence/u6113228922_A_surreal_artistic_interpretation_of_a_digital_play_bb6c4fe4-1cd9-460d-8736-b0f353b1635b_resultat.webp b/app/assets/images/transcenence/u6113228922_A_surreal_artistic_interpretation_of_a_digital_play_bb6c4fe4-1cd9-460d-8736-b0f353b1635b_resultat.webp new file mode 100644 index 0000000..a4a493a Binary files /dev/null and b/app/assets/images/transcenence/u6113228922_A_surreal_artistic_interpretation_of_a_digital_play_bb6c4fe4-1cd9-460d-8736-b0f353b1635b_resultat.webp differ diff --git a/app/assets/images/transcenence/u6113228922_A_vintage_CRT_monitor_displaying_a_multiplayer_Pong_0ddb455d-63c6-41cc-ab95-3a7fa17f0abc_resultat.webp b/app/assets/images/transcenence/u6113228922_A_vintage_CRT_monitor_displaying_a_multiplayer_Pong_0ddb455d-63c6-41cc-ab95-3a7fa17f0abc_resultat.webp new file mode 100644 index 0000000..eb48913 Binary files /dev/null and b/app/assets/images/transcenence/u6113228922_A_vintage_CRT_monitor_displaying_a_multiplayer_Pong_0ddb455d-63c6-41cc-ab95-3a7fa17f0abc_resultat.webp differ diff --git a/app/assets/images/wallpapersite_resultat.webp b/app/assets/images/wallpapersite_resultat.webp new file mode 100644 index 0000000..cdfbe88 Binary files /dev/null and b/app/assets/images/wallpapersite_resultat.webp differ diff --git a/app/assets/main.css b/app/assets/main.css index 0d4c217..1f8ba9c 100644 --- a/app/assets/main.css +++ b/app/assets/main.css @@ -1,13 +1,4 @@ -/* Importation des polices Google Fonts */ -@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Exo+2:wght@400;700&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Audiowide&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Raleway:wght@400;700&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap'); .font-orbitron-24 { font-family: 'Orbitron', sans-serif; @@ -27,7 +18,6 @@ color: #333333; } -/* Classe pour la police Orbitron avec taille 24px en gras */ .font-orbitron-24-bold { font-family: 'Orbitron', sans-serif; font-size: 24px; @@ -35,7 +25,6 @@ color: #333333; } -/* Classe pour la police Orbitron avec taille 24px en italique */ .font-orbitron-24-italic { font-family: 'Orbitron', sans-serif; font-size: 24px; @@ -43,7 +32,6 @@ color: #333333; } -/* Classe pour la police Orbitron avec taille 24px en gras et italique */ .font-orbitron-24-bold-italic { font-family: 'Orbitron', sans-serif; font-size: 24px; @@ -52,7 +40,6 @@ color: #333333; } -/* Classe pour la police Orbitron avec taille 16px en gras */ .font-orbitron-16-bold { font-family: 'Orbitron', sans-serif; font-size: 16px; @@ -60,7 +47,6 @@ color: #333333; } -/* Classe pour la police Orbitron avec taille 16px en italique */ .font-orbitron-16-italic { font-family: 'Orbitron', sans-serif; font-size: 16px; @@ -68,7 +54,6 @@ color: #333333; } -/* Classe pour la police Orbitron avec taille 16px en gras et italique */ .font-orbitron-16-bold-italic { font-family: 'Orbitron', sans-serif; font-size: 16px; @@ -77,7 +62,6 @@ color: #333333; } -/* Classe pour la police Orbitron avec taille 12px en gras */ .font-orbitron-12-bold { font-family: 'Orbitron', sans-serif; font-size: 12px; @@ -85,7 +69,6 @@ color: #333333; } -/* Classe pour la police Orbitron avec taille 12px en italique */ .font-orbitron-12-italic { font-family: 'Orbitron', sans-serif; font-size: 12px; @@ -93,7 +76,6 @@ color: #333333; } -/* Classe pour la police Orbitron avec taille 12px en gras et italique */ .font-orbitron-12-bold-italic { font-family: 'Orbitron', sans-serif; font-size: 12px; @@ -102,96 +84,86 @@ color: #333333; } -/* Importation des styles de base, des composants et des utilitaires de Tailwind CSS */ @tailwind base; @tailwind components; @tailwind utilities; -/* Classe pour définir l'image de fond */ .bg-wallpaper { - background-image: url('./images/wallpapersite.png'); /* Chemin de l'image de fond */ - background-size: cover; /* L'image couvre toute la zone */ - background-position: center; /* L'image est centrée */ - background-repeat: no-repeat; /* L'image ne se répète pas */ + background-image: url('./images/wallpapersite_resultat.webp'); + background-size: cover; + background-position: center; + background-repeat: no-repeat; } -/* Classe pour définir la hauteur minimale et maximale du contenu de la page d'accueil */ .homepage-content { - min-height: 50vh; /* Hauteur minimale de 50% de la hauteur de la fenêtre */ - max-height: 80vh; /* Hauteur maximale de 80% de la hauteur de la fenêtre */ + min-height: 50vh; + max-height: 80vh; } -/* Classe pour animer le premier cercle */ .circle-one { - animation: move1 10s linear infinite; /* Animation infinie avec une durée de 10s */ + animation: move1 10s linear infinite; } -/* Classe pour animer le deuxième cercle */ .circle-two { - animation: move2 10s linear infinite; /* Animation infinie avec une durée de 10s */ + animation: move2 10s linear infinite; } -/* Définition de l'animation pour le premier cercle */ @keyframes move1 { 0% { - transform: translate(0, 0) scale(1); /* Position et échelle initiales */ + transform: translate(0, 0) scale(1); } 25% { - transform: translate(200px, 200px) scale(1); /* Déplacement et échelle */ + transform: translate(200px, 200px) scale(1); } 50% { - transform: translate(100px, 400px) scale(1.2); /* Déplacement et échelle */ + transform: translate(100px, 400px) scale(1.2); } 75% { - transform: translate(-100px, -200px) scale(1.1); /* Déplacement et échelle */ + transform: translate(-100px, -200px) scale(1.1); } 100% { - transform: translate(0, 0) scale(1); /* Retour à la position et échelle initiales */ + transform: translate(0, 0) scale(1); } } -/* Définition de l'animation pour le deuxième cercle */ @keyframes move2 { 0% { - transform: translate(0, 0) scale(1); /* Position et échelle initiales */ + transform: translate(0, 0) scale(1); } 25% { - transform: translate(-200px, -200px) scale(1); /* Déplacement et échelle */ + transform: translate(-200px, -200px) scale(1); } 50% { - transform: translate(-100px, -400px) scale(1.2); /* Déplacement et échelle */ + transform: translate(-100px, -400px) scale(1.2); } 75% { - transform: translate(100px, 200px) scale(1.1); /* Déplacement et échelle */ + transform: translate(100px, 200px) scale(1.1); } 100% { - transform: translate(0, 0) scale(1); /* Retour à la position et échelle initiales */ + transform: translate(0, 0) scale(1); } } -/* Classe pour agrandir le conteneur */ .large-container { - max-width: 72rem; /* Largeur maximale de 72rem */ - margin: 0 auto; /* Centrer horizontalement */ - padding: 1.5rem; /* Padding de 1.5rem */ + max-width: 72rem; + margin: 0 auto; + padding: 1.5rem; } -/* Masquer la barre de défilement par défaut */ .hide-scrollbar { - scrollbar-width: none; /* Firefox */ - -ms-overflow-style: none; /* Internet Explorer 10+ */ + scrollbar-width: none; + -ms-overflow-style: none; } .hide-scrollbar::-webkit-scrollbar { - display: none; /* WebKit (Chrome, Safari, Edge) */ + display: none; } -/* Afficher la barre de défilement au survol */ .show-scrollbar:hover { - scrollbar-width: auto; /* Firefox */ - -ms-overflow-style: auto; /* Internet Explorer 10+ */ + scrollbar-width: auto; + -ms-overflow-style: auto; } .show-scrollbar:hover::-webkit-scrollbar { - display: block; /* WebKit (Chrome, Safari, Edge) */ + display: block; } diff --git a/app/components/Carousel.tsx b/app/components/Carousel.tsx index 0f07b81..d7eb052 100644 --- a/app/components/Carousel.tsx +++ b/app/components/Carousel.tsx @@ -1,7 +1,7 @@ "use client"; import { useState } from "react"; -import { createPortal } from "react-dom"; // Importation de createPortal pour les modals +import { createPortal } from "react-dom"; import { Swiper, SwiperSlide } from "swiper/react"; import { Navigation, Pagination, Autoplay } from "swiper/modules"; import "swiper/css"; @@ -9,58 +9,51 @@ import "swiper/css/navigation"; import "swiper/css/pagination"; interface CarouselProps { - images: Array<{ url: string; alt: string }>; // Propriétés des images du carrousel - className?: string; // Classe CSS optionnelle pour personnaliser le style + images: Array<{ url: string; alt: string }>; + className?: string; } export default function Carousel({ images, className }: CarouselProps) { - const [selectedImage, setSelectedImage] = useState(null); // État pour l'image sélectionnée + const [selectedImage, setSelectedImage] = useState(null); return ( <> - {/* Carrousel principal */}
    - {/* Boucle sur les images pour les afficher dans le carrousel */} {images.map((img, index) => ( - {/* Image cliquable pour affichage en plein écran */} {img.alt} setSelectedImage(img.url)} // Ouvre l’image en plein écran + onClick={() => setSelectedImage(img.url)} /> ))}
    - {/* Modal plein écran inséré dans grâce à createPortal */} {selectedImage && createPortal(
    setSelectedImage(null)} // Fermer au clic + onClick={() => setSelectedImage(null)} >
    - {/* Bouton de fermeture */} - - {/* Image affichée en grand */} Agrandissement; // Propriétés des images du carrousel - className?: string; // Classe CSS optionnelle pour personnaliser le style + images: Array<{ url: string; alt: string }>; + className?: string; } export default function CarouselCompetences({ images, className }: CarouselProps) { - const [selectedImage, setSelectedImage] = useState(null); // État pour l'image sélectionnée + const [selectedImage, setSelectedImage] = useState(null); return ( <> - {/* Carrousel compétences */}
    - {/* Boucle sur les images pour les afficher dans le carrousel */} {images.map((img, index) => ( - {/* Image cliquable pour affichage en plein écran */} {img.alt} setSelectedImage(img.url)} // Ouvre l’image en plein écran + onClick={() => setSelectedImage(img.url)} /> ))}
    - {/* Modal plein écran pour agrandir les images */} {selectedImage && createPortal(
    setSelectedImage(null)} // Fermer au clic + onClick={() => setSelectedImage(null)} >
    - {/* Bouton de fermeture */} - - {/* Image affichée en grand */} Agrandissement +
    💬 GrasBot diff --git a/app/components/ContactForm.tsx b/app/components/ContactForm.tsx index 5d8458a..7ae9f2f 100644 --- a/app/components/ContactForm.tsx +++ b/app/components/ContactForm.tsx @@ -4,13 +4,12 @@ import { useState } from "react"; import { sendMessage } from "../utils/sendMessage"; export default function ContactForm() { - // États pour gérer les valeurs des champs de formulaire const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [message, setMessage] = useState(""); const [status, setStatus] = useState(""); const [isSuccess, setIsSuccess] = useState(null); - const [isLoading, setIsLoading] = useState(false); // ✅ Nouvel état pour désactiver le bouton + const [isLoading, setIsLoading] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); @@ -29,7 +28,7 @@ export default function ContactForm() { setStatus("⏳ Envoi en cours..."); setIsSuccess(null); - setIsLoading(true); // ✅ Désactive le bouton pendant l'envoi + setIsLoading(true); try { await sendMessage(name, email, message); @@ -42,7 +41,7 @@ export default function ContactForm() { setStatus("❌ Erreur lors de l'envoi du message."); setIsSuccess(false); } finally { - setIsLoading(false); // ✅ Réactive le bouton après l'envoi + setIsLoading(false); } }; @@ -81,7 +80,7 @@ export default function ContactForm() { - {/* Conteneur Flexbox pour la description et le carrousel */}
    {/* Description */}
    @@ -61,7 +53,6 @@ export default function ModalGlossaire({ mot, onClose }: ModalGlossaireProps) {

    {mot.description}

    - {/* Carrousel d'images si disponible */}
    {images.length > 0 ? ( diff --git a/app/components/NavLink.jsx b/app/components/NavLink.jsx index b8e9a95..19ccd2f 100644 --- a/app/components/NavLink.jsx +++ b/app/components/NavLink.jsx @@ -1,16 +1,16 @@ "use client" -import Link from "next/link"; // Importation du composant Link de Next.js pour la navigation -import { usePathname } from "next/navigation"; // Importation du hook usePathname pour obtenir le chemin actuel +import Link from "next/link"; +import { usePathname } from "next/navigation"; export default function NavLink(props) { - const pathname = usePathname(); // Obtention du chemin actuel - const active = pathname === props.path; // Vérification si le lien est actif + const pathname = usePathname(); + const active = pathname === props.path; return ( {props.text} {/* Texte du lien */} diff --git a/app/contact/page.js b/app/contact/page.js index 3ad7732..44e4bdd 100644 --- a/app/contact/page.js +++ b/app/contact/page.js @@ -1,24 +1,19 @@ -// Importation de ContactForm et getApiUrl import ContactForm from "../components/ContactForm"; import { getApiUrl } from "../utils/getApiUrl"; export default function ContactPage() { - // Définition de l'URL API dynamique const apiUrl = getApiUrl(); return (
    - {/* Titre avec un cadre */}

    📬 Correspondance

    - {/* Texte d'introduction */}

    Vous pouvez me contacter via ce formulaire ou sur mes réseaux sociaux.

    - {/* Informations de contact mises à jour */}

    LinkedIn: Fernand Gras-Calvet @@ -31,7 +26,6 @@ export default function ContactPage() {

    - {/* Formulaire de contact amélioré */}
    diff --git a/app/globals.css b/app/globals.css index ae2bd46..9f66153 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,44 +1,39 @@ -/* Importation des styles de base, des composants et des utilitaires de Tailwind CSS */ + @tailwind base; @tailwind components; @tailwind utilities; -/* Définition des variables CSS pour les couleurs de fond et de premier plan */ :root { - --background: #ffffff; /* Couleur de fond par défaut (clair) */ - --foreground: #171717; /* Couleur de premier plan par défaut (foncé) */ + --background: #ffffff; + --foreground: #171717; } -/* Définition des variables CSS pour le mode sombre */ @media (prefers-color-scheme: dark) { :root { - --background: #0a0a0a; /* Couleur de fond pour le mode sombre */ - --foreground: #ededed; /* Couleur de premier plan pour le mode sombre */ + --background: #0a0a0a; + --foreground: #ededed; } } -/* Styles globaux pour le corps de la page */ body { - color: var(--foreground); /* Utilisation de la couleur de premier plan définie */ - background: var(--background); /* Utilisation de la couleur de fond définie */ - font-family: Arial, Helvetica, sans-serif; /* Police de caractères par défaut */ + color: var(--foreground); + background: var(--background); + font-family: Arial, Helvetica, sans-serif; } -/* Définition d'une animation de fondu en entrée */ @keyframes fade-in { from { - opacity: 0; /* Opacité initiale à 0 (invisible) */ - transform: translateY(-10px); /* Déplacement initial vers le haut */ + opacity: 0; + transform: translateY(-10px); } to { - opacity: 1; /* Opacité finale à 1 (visible) */ - transform: translateY(0); /* Position finale */ + opacity: 1; + transform: translateY(0); } } -/* Classe utilitaire pour appliquer l'animation de fondu en entrée */ .animate-fade-in { - animation: fade-in 0.5s ease-out; /* Animation de 0.5s avec une courbe de transition */ + animation: fade-in 0.5s ease-out; } @keyframes blink { diff --git a/app/layout.tsx b/app/layout.tsx index f07eccf..eec1a20 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -40,14 +40,12 @@ export default function RootLayout({ children }) {
    - {/* Ne pas forcer de largeur ici, chaque page gère son `main` */}
    {children}