diff --git a/.gitignore b/.gitignore
index 5ef6a52..c4ea510 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,3 +39,5 @@ yarn-error.log*
# typescript
*.tsbuildinfo
next-env.d.ts
+
+.vercel
diff --git a/app/Competences/[slug]/page.tsx b/app/Competences/[slug]/page.tsx
index 5e2e5a5..609cbd8 100644
--- a/app/Competences/[slug]/page.tsx
+++ b/app/Competences/[slug]/page.tsx
@@ -1,5 +1,10 @@
-import ContentSectionCompetencesContainer from "../../components/ContentSectionCompetencesContainer";
-
-export default function CompetencePage({ params }: { params: { slug: string } }) {
- return ;
-}
+import ContentSectionCompetencesContainer from "../../components/ContentSectionCompetencesContainer";
+
+export default function CompetencePage({ params }: { params: { slug: string } }) {
+ // Vérifie que le paramètre `slug` est bien défini
+ if (!params?.slug) {
+ return
Erreur : Slug introuvable.
;
+ }
+
+ return ;
+}
diff --git a/app/portfolio/[slug]/page.tsx b/app/portfolio/[slug]/page.tsx
index 46cef79..0fa0d81 100644
--- a/app/portfolio/[slug]/page.tsx
+++ b/app/portfolio/[slug]/page.tsx
@@ -1,7 +1,51 @@
-import ContentSection from "../../components/ContentSection"; // Importation du composant ContentSection
+"use client";
-// Composant principal de la page de détail du projet
-export default function Page({ params }: { params: { slug: string } }) {
- // Rendu du composant ContentSection avec les paramètres de la collection et du slug
- return ;
-}
\ No newline at end of file
+import { useParams } from "next/navigation";
+import ContentSection from "../../components/ContentSection";
+import { useEffect, useState } from "react";
+
+export default function Page() {
+ const params = useParams();
+ const [data, setData] = useState(null);
+ const [loading, setLoading] = useState(true);
+ const [error, setError] = useState(null); // ✅ Ajout du typage string | null
+ const slug = typeof params.slug === "string" ? params.slug : "";
+
+ useEffect(() => {
+ if (!params?.slug) return;
+
+ async function fetchData() {
+ try {
+ const response = await fetch(`http://localhost:1337/api/projects?filters[slug][$eq]=${params.slug}&populate=*`);
+ const jsonData = await response.json();
+
+ if (!jsonData?.data || jsonData.data.length === 0) {
+ setError("❌ Erreur : Projet introuvable.");
+ } else {
+ setData(jsonData.data);
+ }
+ } catch (err) {
+ setError("❌ Erreur de chargement des données.");
+ } finally {
+ setLoading(false);
+ }
+ }
+
+ fetchData();
+ }, [params.slug]);
+
+ if (!params?.slug) {
+ return ❌ Erreur : Slug introuvable.
;
+ }
+
+ if (loading) {
+ return ⏳ Chargement...
;
+ }
+
+ if (error) {
+ return {error}
;
+ }
+
+ return params.slug ? : ❌ Erreur : Slug introuvable.
;
+
+}
diff --git a/next.config.ts b/next.config.ts
index 22d113f..e77b6cf 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -2,10 +2,8 @@
const nextConfig = {
// Active le mode strict de React pour signaler des erreurs potentielles
reactStrictMode: true,
-
- // Activer les fonctionnalités expérimentales nécessaires (par exemple appDir pour les layouts de l'application)
experimental: {
- appDir: true,
+ appDir: true, // ✅ Assurez-vous que cette ligne est bien présente
},
// Gestion des réécritures d'URL pour proxy local vers le backend