Files
obc-terrassement/app/layout.tsx
Claude 3adcec00b7 feat: Transform HookLab to OBC Maçonnerie showcase site
Complete transformation of the Next.js project into a professional
showcase site for OBC Maçonnerie (Benoît Colin, maçon in Nord 59).

Key changes:
- Remove all HookLab/Sanity/Supabase/Stripe/admin/training infrastructure
- Full OBC Maçonnerie identity: logo, colors, contact info, SIREN
- Schema.org LocalBusiness structured data for Benoît Colin
- SEO metadata for all pages targeting Nord 59 keywords

New pages created (23 total):
- Home page with 10 sections (hero, services, pillars, partners,
  zone, realisations, testimonials, FAQ, contact form, footer)
- Service pages: construction-maison, renovation, assainissement,
  creation-acces, demolition, services
- Secondary pages: realisations, partenaires, contact
- Blog: listing + 6 SEO articles with static content
- 8 local SEO pages: Orchies, Douai, Valenciennes, Mouchin,
  Flines-lès-Raches, Saint-Amand-les-Eaux
- Legal pages: mentions-legales, cgv, confidentialite (OBC adapted)

Components:
- Navbar with OBC branding + mobile menu
- Footer with dark navy theme, services + navigation links
- ContactForm client component (devis request)
- LocalSEOPage reusable component for local SEO pages
- CookieBanner updated with OBC cookie key

Config:
- layout.tsx: OBC metadata, Schema.org, no Sanity CDN
- globals.css: stone color variables added
- next.config.ts: removed Sanity CDN remotePatterns
- sitemap.ts: all 30 OBC pages
- robots.ts: allow all except /api/
- api/contact/route.ts: OBC devis email template

https://claude.ai/code/session_01Uec4iHjcPwB1pU41idWEdF
2026-02-27 09:05:03 +00:00

195 lines
5.8 KiB
TypeScript

import type { Metadata } from "next";
import CookieBanner from "@/components/CookieBanner";
import "./globals.css";
const BASE_URL = process.env.NEXT_PUBLIC_APP_URL || "https://obc-maconnerie.fr";
export const metadata: Metadata = {
metadataBase: new URL(BASE_URL),
title: {
default: "OBC Maçonnerie | Constructeur & Maçon à Orchies (Nord 59)",
template: "%s | OBC Maçonnerie",
},
description:
"Benoît Colin, maçon expert à Mouchin. Construction de maison, rénovation, assainissement et gros œuvre dans un rayon de 30km autour d'Orchies. Devis gratuit.",
keywords: [
"construction maison Nord",
"maçon construction maison Orchies",
"rénovation maison Nord 59",
"entreprise maçonnerie Mouchin",
"fondation ossature bois Nord",
"assainissement maison Nord",
"création accès maison Nord",
"démolition maison Nord 59",
"maçon rénovation Douai",
"maçon rénovation Valenciennes",
"gros œuvre Nord",
"entrepreneur maçon Nord 59",
"OBC Maçonnerie",
"Benoît Colin maçon",
"maçon Mouchin",
"construction maison Orchies",
],
authors: [{ name: "OBC Maçonnerie - Benoît Colin" }],
creator: "OBC Maçonnerie",
publisher: "OBC Maçonnerie",
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
"max-video-preview": -1,
"max-image-preview": "large",
"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",
url: BASE_URL,
siteName: "OBC Maçonnerie",
title: "OBC Maçonnerie | Constructeur & Maçon dans le Nord (59)",
description:
"Construction de maison, rénovation, assainissement et gros œuvre autour d'Orchies, Douai, Valenciennes. Benoît Colin vous accompagne de A à Z.",
images: [
{
url: "/og-image.jpg",
width: 1200,
height: 630,
alt: "OBC Maçonnerie - Construction et rénovation dans le Nord",
},
],
},
twitter: {
card: "summary_large_image",
title: "OBC Maçonnerie | Maçon constructeur dans le Nord (59)",
description:
"Construction de maison, rénovation, assainissement. Orchies, Douai, Valenciennes.",
images: ["/og-image.jpg"],
},
alternates: {
canonical: BASE_URL,
},
verification: {
google: process.env.GOOGLE_SITE_VERIFICATION || undefined,
},
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
const jsonLdBusiness = {
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": `${BASE_URL}/#business`,
name: "OBC Maçonnerie",
description:
"Construction de maison, rénovation, assainissement et gros œuvre dans le Nord",
telephone: "06 74 45 30 89",
email: "contact@obc-maconnerie.fr",
url: BASE_URL,
logo: `${BASE_URL}/icon-512.svg`,
image: `${BASE_URL}/og-image.jpg`,
priceRange: "$$",
address: {
"@type": "PostalAddress",
streetAddress: "221 Route de Saint-Amand",
addressLocality: "Mouchin",
postalCode: "59310",
addressRegion: "Hauts-de-France",
addressCountry: "FR",
},
geo: {
"@type": "GeoCoordinates",
latitude: 50.4817,
longitude: 3.3342,
},
areaServed: [
{ "@type": "City", name: "Orchies" },
{ "@type": "City", name: "Mouchin" },
{ "@type": "City", name: "Douai" },
{ "@type": "City", name: "Valenciennes" },
{ "@type": "City", name: "Flines-lès-Raches" },
{ "@type": "City", name: "Saint-Amand-les-Eaux" },
{ "@type": "City", name: "Château-l'Abbaye" },
{ "@type": "City", name: "Mérignies" },
],
hasOfferCatalog: {
"@type": "OfferCatalog",
name: "Services de maçonnerie",
itemListElement: [
{ "@type": "Offer", "name": "Construction de maison" },
{ "@type": "Offer", "name": "Rénovation" },
{ "@type": "Offer", "name": "Assainissement" },
{ "@type": "Offer", "name": "Création d'accès" },
{ "@type": "Offer", "name": "Démolition" },
],
},
openingHoursSpecification: {
"@type": "OpeningHoursSpecification",
dayOfWeek: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
opens: "07:00",
closes: "19:00",
},
contactPoint: {
"@type": "ContactPoint",
telephone: "06 74 45 30 89",
contactType: "customer service",
availableLanguage: "French",
},
founder: {
"@type": "Person",
name: "Benoît Colin",
jobTitle: "Maçon - Gérant OBC Maçonnerie",
},
sameAs: [],
};
const jsonLdWebSite = {
"@context": "https://schema.org",
"@type": "WebSite",
"@id": `${BASE_URL}/#website`,
name: "OBC Maçonnerie",
url: BASE_URL,
description:
"Site officiel d'OBC Maçonnerie, entreprise de construction et rénovation dans le Nord (59).",
publisher: {
"@id": `${BASE_URL}/#business`,
},
inLanguage: "fr-FR",
};
return (
<html lang="fr">
<head>
<meta name="theme-color" content="#1B2A4A" />
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="/apple-touch-icon.svg" />
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify([jsonLdBusiness, jsonLdWebSite]),
}}
/>
</head>
<body className="antialiased">
<a href="#main-content" className="skip-to-content">
Aller au contenu principal
</a>
{children}
<CookieBanner />
</body>
</html>
);
}