feat: pivot complet - agence web artisans BTP Nord + Sanity CMS

Transformation complète du site HookLab de formation TikTok Shop
vers une landing page haute conversion pour agence web locale ciblant
les artisans du bâtiment dans le Nord (Douai, Orchies, Valenciennes).

- Nouveau design system : bleu nuit/orange sur fond clair (mobile-first)
- Hero avec promesse artisan + CTA orange "Réserver mon Audit"
- Section "Le Système" (3 étapes : Trouvé, Choisi, Contacté)
- Portfolio connecté à Sanity.io (fallback data intégré)
- Section "Qui suis-je" avec carte OpenStreetMap interactive
- FAQ orientée artisans avec JSON-LD pour Google
- Formulaire contact audit gratuit
- SEO local : 12 keywords artisans, JSON-LD LocalBusiness
- Sanity.io schemas (portfolio, siteSettings) + client conditionnel
- Accessibilité : skip-to-content, focus-visible, aria-labels

https://claude.ai/code/session_01H2aRGDaKgarPvhay2HxN6Y
This commit is contained in:
Claude
2026-02-15 12:50:52 +00:00
parent 1926d51213
commit bca3745603
26 changed files with 1364 additions and 571 deletions

View File

@@ -1,68 +1,41 @@
import AnnouncementBar from "@/components/marketing/AnnouncementBar";
import Navbar from "@/components/marketing/Navbar";
import Hero from "@/components/marketing/Hero";
import ResultsShowcase from "@/components/marketing/ResultsShowcase";
import Method from "@/components/marketing/Method";
import PersonaCards from "@/components/marketing/PersonaCards";
import ComparisonTable from "@/components/marketing/ComparisonTable";
import Testimonials from "@/components/marketing/Testimonials";
import Pricing from "@/components/marketing/Pricing";
import TrustBadges from "@/components/marketing/TrustBadges";
import System from "@/components/marketing/System";
import Portfolio from "@/components/marketing/Portfolio";
import AboutMe from "@/components/marketing/AboutMe";
import FAQ from "@/components/marketing/FAQ";
import FinalCTA from "@/components/marketing/FinalCTA";
import Contact from "@/components/marketing/Contact";
import Footer from "@/components/marketing/Footer";
import ExitIntentPopup from "@/components/marketing/ExitIntentPopup";
import StickyMobileCTA from "@/components/marketing/StickyMobileCTA";
import { getPortfolio } from "@/lib/sanity/queries";
export default async function LandingPage() {
const portfolioItems = await getPortfolio();
export default function LandingPage() {
return (
<main className="min-h-screen">
{/* Top announcement bar */}
<AnnouncementBar />
<main id="main-content" className="min-h-screen">
{/* Navigation */}
<Navbar />
{/* Hero with SEO-optimized H1 */}
{/* Hero - La Promesse */}
<Hero />
{/* Market opportunity + timeline */}
<section id="resultats">
<ResultsShowcase />
</section>
{/* Le Système - Dossier de Confiance */}
<System />
{/* 3-step method */}
<Method />
{/* Portfolio - Preuves */}
<Portfolio items={portfolioItems} />
{/* Target personas */}
<PersonaCards />
{/* Qui suis-je - Ancrage Local */}
<AboutMe />
{/* Comparison table */}
<ComparisonTable />
{/* Testimonials with disclaimer */}
<Testimonials />
{/* Pricing with urgency */}
<Pricing />
{/* Trust signals */}
<TrustBadges />
{/* FAQ with structured data */}
{/* FAQ */}
<FAQ />
{/* Final CTA */}
<FinalCTA />
{/* Contact / Audit CTA */}
<Contact />
{/* Footer */}
<Footer />
{/* Exit intent popup */}
<ExitIntentPopup />
{/* Sticky mobile CTA bar */}
<StickyMobileCTA />
</main>
);
}