diff --git a/app/candidature/layout.tsx b/app/candidature/layout.tsx new file mode 100644 index 0000000..d631a9b --- /dev/null +++ b/app/candidature/layout.tsx @@ -0,0 +1,18 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Candidature Formation HookLab", + description: + "Postulez à la formation HookLab pour apprendre à créer des sites web professionnels pour artisans du bâtiment. Formation complète et accompagnement personnalisé.", + alternates: { + canonical: "https://hooklab.eu/candidature", + }, +}; + +export default function CandidatureLayout({ + children, +}: { + children: React.ReactNode; +}) { + return children; +} diff --git a/app/cgv/page.tsx b/app/cgv/page.tsx index d1df862..305b07a 100644 --- a/app/cgv/page.tsx +++ b/app/cgv/page.tsx @@ -1,5 +1,15 @@ +import type { Metadata } from "next"; import Link from "next/link"; +export const metadata: Metadata = { + title: "Conditions Générales de Vente", + description: + "CGV de HookLab - Conditions générales de vente pour les prestations de création de sites internet et référencement.", + alternates: { + canonical: "https://hooklab.eu/cgv", + }, +}; + export default function CGV() { return (
diff --git a/app/confidentialite/page.tsx b/app/confidentialite/page.tsx index d629b5f..344f37b 100644 --- a/app/confidentialite/page.tsx +++ b/app/confidentialite/page.tsx @@ -1,5 +1,15 @@ +import type { Metadata } from "next"; import Link from "next/link"; +export const metadata: Metadata = { + title: "Politique de Confidentialité", + description: + "Politique de confidentialité et protection des données personnelles du site HookLab.eu, conformément au RGPD.", + alternates: { + canonical: "https://hooklab.eu/confidentialite", + }, +}; + export default function Confidentialite() { return (
diff --git a/app/layout.tsx b/app/layout.tsx index 4c4e105..046a4dd 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -25,6 +25,10 @@ export const metadata: Metadata = { "site web Valenciennes", "agence web Orchies", "site pro artisan Nord", + "HookLab", + "hooklab.eu", + "cr\u00e9ation site internet Nord", + "site internet artisan 59", ], authors: [{ name: "HookLab - Enguerrand Ozano" }], creator: "HookLab", @@ -40,6 +44,15 @@ export const metadata: Metadata = { "max-snippet": -1, }, }, + icons: { + icon: [ + { url: "/favicon.svg", type: "image/svg+xml" }, + ], + apple: [ + { url: "/apple-touch-icon.svg", type: "image/svg+xml", sizes: "180x180" }, + ], + }, + manifest: "/site.webmanifest", openGraph: { type: "website", locale: "fr_FR", @@ -78,20 +91,25 @@ export default function RootLayout({ }: Readonly<{ children: React.ReactNode; }>) { + // Schema.org LocalBusiness const jsonLdOrganization = { "@context": "https://schema.org", "@type": "LocalBusiness", + "@id": `${BASE_URL}/#organization`, name: "HookLab", url: BASE_URL, - logo: `${BASE_URL}/logo.png`, + logo: `${BASE_URL}/icon-512.svg`, + image: `${BASE_URL}/og-image.png`, description: "Agence web sp\u00e9cialis\u00e9e dans la cr\u00e9ation de sites et la visibilit\u00e9 Google pour les artisans du b\u00e2timent dans le Nord.", + telephone: "+33604408157", + email: "contact@hooklab.eu", address: { "@type": "PostalAddress", streetAddress: "35 rue Mo\u00efse Lambert", addressLocality: "Flines-lez-Raches", postalCode: "59148", - addressRegion: "Nord", + addressRegion: "Hauts-de-France", addressCountry: "FR", }, geo: { @@ -105,22 +123,104 @@ export default function RootLayout({ { "@type": "City", name: "Valenciennes" }, { "@type": "City", name: "Arleux" }, { "@type": "City", name: "Flines-lez-Raches" }, + { "@type": "City", name: "Saint-Amand-les-Eaux" }, + { "@type": "City", name: "Denain" }, ], priceRange: "$$", + openingHoursSpecification: { + "@type": "OpeningHoursSpecification", + dayOfWeek: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], + opens: "09:00", + closes: "18:00", + }, contactPoint: { "@type": "ContactPoint", + telephone: "+33604408157", contactType: "customer service", availableLanguage: "French", }, + sameAs: [], + }; + + // Schema.org WebSite - aide Google à afficher le nom du site et les sitelinks + const jsonLdWebSite = { + "@context": "https://schema.org", + "@type": "WebSite", + "@id": `${BASE_URL}/#website`, + name: "HookLab", + alternateName: "HookLab Tech", + url: BASE_URL, + description: + "Cr\u00e9ation de sites internet et r\u00e9f\u00e9rencement Google pour artisans du b\u00e2timent dans le Nord (59).", + publisher: { + "@id": `${BASE_URL}/#organization`, + }, + inLanguage: "fr-FR", + potentialAction: { + "@type": "SearchAction", + target: { + "@type": "EntryPoint", + urlTemplate: `${BASE_URL}/?q={search_term_string}`, + }, + "query-input": "required name=search_term_string", + }, + }; + + // Schema.org SiteNavigationElement - signale les pages principales à Google + const jsonLdNavigation = { + "@context": "https://schema.org", + "@type": "SiteNavigationElement", + "@id": `${BASE_URL}/#navigation`, + name: "Navigation principale", + hasPart: [ + { + "@type": "WebPage", + name: "Accueil", + url: BASE_URL, + }, + { + "@type": "WebPage", + name: "D\u00e9mo Ma\u00e7on / Couvreur", + url: `${BASE_URL}/macon`, + }, + { + "@type": "WebPage", + name: "D\u00e9mo Paysagiste", + url: `${BASE_URL}/paysagiste`, + }, + { + "@type": "WebPage", + name: "D\u00e9mo Plombier", + url: `${BASE_URL}/plombier`, + }, + { + "@type": "WebPage", + name: "Candidature Formation", + url: `${BASE_URL}/candidature`, + }, + { + "@type": "WebPage", + name: "Mentions L\u00e9gales", + url: `${BASE_URL}/mentions-legales`, + }, + { + "@type": "WebPage", + name: "Politique de Confidentialit\u00e9", + url: `${BASE_URL}/confidentialite`, + }, + ], }; return ( + + +