@@ -127,14 +123,13 @@ export default function RootLayout({
__html: JSON.stringify(jsonLdOrganization),
}}
/>
-
- {children}
+
+
+ Aller au contenu principal
+
+ {children}
+
);
}
diff --git a/app/page.tsx b/app/page.tsx
index c702024..e22653e 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -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 (
-
- {/* Top announcement bar */}
-
-
+
{/* Navigation */}
- {/* Hero with SEO-optimized H1 */}
+ {/* Hero - La Promesse */}
- {/* Market opportunity + timeline */}
-
-
-
+ {/* Le Système - Dossier de Confiance */}
+
- {/* 3-step method */}
-
+ {/* Portfolio - Preuves */}
+
- {/* Target personas */}
-
+ {/* Qui suis-je - Ancrage Local */}
+
- {/* Comparison table */}
-
-
- {/* Testimonials with disclaimer */}
-
-
- {/* Pricing with urgency */}
-
-
- {/* Trust signals */}
-
-
- {/* FAQ with structured data */}
+ {/* FAQ */}
- {/* Final CTA */}
-
+ {/* Contact / Audit CTA */}
+
{/* Footer */}
-
- {/* Exit intent popup */}
-
-
- {/* Sticky mobile CTA bar */}
-
);
}
diff --git a/app/robots.ts b/app/robots.ts
index 85acad0..6ce1c04 100644
--- a/app/robots.ts
+++ b/app/robots.ts
@@ -8,7 +8,7 @@ export default function robots(): MetadataRoute.Robots {
{
userAgent: "*",
allow: "/",
- disallow: ["/admin/", "/api/", "/setup-admin/", "/dashboard/", "/profil/", "/formations/"],
+ disallow: ["/admin/", "/api/", "/setup-admin/", "/dashboard/", "/profil/", "/formations/", "/login/", "/register/"],
},
],
sitemap: `${BASE_URL}/sitemap.xml`,
diff --git a/app/sitemap.ts b/app/sitemap.ts
index f8bce86..7d6e726 100644
--- a/app/sitemap.ts
+++ b/app/sitemap.ts
@@ -10,35 +10,17 @@ export default function sitemap(): MetadataRoute.Sitemap {
changeFrequency: "weekly",
priority: 1.0,
},
- {
- url: `${BASE_URL}/candidature`,
- lastModified: new Date(),
- changeFrequency: "monthly",
- priority: 0.9,
- },
- {
- url: `${BASE_URL}/login`,
- lastModified: new Date(),
- changeFrequency: "monthly",
- priority: 0.3,
- },
{
url: `${BASE_URL}/mentions-legales`,
lastModified: new Date(),
changeFrequency: "yearly",
- priority: 0.2,
- },
- {
- url: `${BASE_URL}/cgv`,
- lastModified: new Date(),
- changeFrequency: "yearly",
- priority: 0.2,
+ priority: 0.3,
},
{
url: `${BASE_URL}/confidentialite`,
lastModified: new Date(),
changeFrequency: "yearly",
- priority: 0.2,
+ priority: 0.3,
},
];
}
diff --git a/components/CookieBanner.tsx b/components/CookieBanner.tsx
new file mode 100644
index 0000000..c99d238
--- /dev/null
+++ b/components/CookieBanner.tsx
@@ -0,0 +1,60 @@
+"use client";
+
+import { useState, useEffect } from "react";
+import Link from "next/link";
+
+export default function CookieBanner() {
+ const [visible, setVisible] = useState(false);
+
+ useEffect(() => {
+ const consent = localStorage.getItem("hooklab_cookie_consent");
+ if (!consent) {
+ setVisible(true);
+ }
+ }, []);
+
+ const handleAccept = () => {
+ localStorage.setItem("hooklab_cookie_consent", "accepted");
+ setVisible(false);
+ };
+
+ const handleRefuse = () => {
+ localStorage.setItem("hooklab_cookie_consent", "refused");
+ setVisible(false);
+ };
+
+ if (!visible) return null;
+
+ return (
+
+
+
+ Ce site utilise uniquement des cookies techniques nécessaires
+ au fonctionnement de la plateforme (authentification, session). Aucun cookie publicitaire
+ ou de traçage n’est utilisé.{" "}
+
+ Politique de confidentialité
+
+
+ Je suis Enguerrand, spécialisé dans la
+ visibilité locale et la construction de{" "}
+ systèmes de confiance en ligne{" "}
+ pour les TPE/PME du Nord.
+
+
+ Je ne suis pas un call center parisien. Je connais la réalité de vos
+ chantiers à Douai, Orchies ou Valenciennes. Je sais que vous n’avez pas
+ le temps de gérer “un truc internet” et que vous voulez des résultats
+ concrets : des appels de vrais clients.
+
+
+ Mon approche : je vous construis un dossier de confiance{" "}
+ (Google + site + preuves) qui transforme votre bouche-à-oreille en système
+ permanent. Pas de jargon, pas de blabla — du concret.
+
+
+
+
+
100%
+
Local Nord
+
+
+
24h
+
Délai de réponse
+
+
+
+
+
+ {/* Map */}
+
+
+
+ Zone d’intervention : Douai, Orchies, Arleux, Valenciennes et environs
+
+ Prêt à arrêter de courir après les chantiers ?
+
+
+ Réservez votre audit gratuit. Je regarde votre situation Google,
+ votre visibilité actuelle, et je vous dis concrètement ce
+ qu’on peut améliorer. Sans engagement, sans jargon.
+
+
+
+ {[
+ "Audit de votre pr\u00e9sence Google actuelle",
+ "Analyse de vos concurrents locaux",
+ "Plan d\u2019action concret et chiffr\u00e9",
+ "R\u00e9ponse sous 24h",
+ ].map((item, i) => (
+
+
+
+
+ {item}
+
+ ))}
+
+
+
+ {/* Right - Form */}
+
+ {submitted ? (
+
+
+
+
+
Demande envoyée !
+
+ Je vous recontacte sous 24h pour planifier votre audit.
+
+
+ ) : (
+ <>
+
+ Réserver mon audit gratuit
+
+
+ Remplissez le formulaire, je vous recontacte rapidement.
+
+
+ >
+ )}
+
+
+
+
+ );
+}
diff --git a/components/marketing/FAQ.tsx b/components/marketing/FAQ.tsx
index 7192cd2..db34af4 100644
--- a/components/marketing/FAQ.tsx
+++ b/components/marketing/FAQ.tsx
@@ -4,54 +4,36 @@ import { useState } from "react";
const faqs = [
{
- question: "C\u2019est quoi l\u2019affiliation TikTok Shop exactement ?",
- answer:
- "L\u2019affiliation TikTok Shop te permet de gagner des commissions en faisant la promotion de produits dans tes vid\u00e9os TikTok. Tu n\u2019as pas besoin de stock ni d\u2019investissement : tu cr\u00e9es du contenu, les gens ach\u00e8tent via ton lien, et tu touches entre 10% et 30% de commission sur chaque vente.",
+ q: "Combien co\u00fbte un site avec HookLab ?",
+ a: "Chaque projet est diff\u00e9rent. Je propose un audit gratuit pour comprendre votre situation et vous faire une proposition adapt\u00e9e \u00e0 votre activit\u00e9. Pas d\u2019abonnement cach\u00e9, pas de surprise.",
},
{
- question: "Ai-je besoin d\u2019exp\u00e9rience sur TikTok pour commencer ?",
- answer:
- "Non, aucune exp\u00e9rience n\u2019est requise. Notre programme part de z\u00e9ro et t\u2019accompagne \u00e9tape par \u00e9tape. Beaucoup de nos \u00e9l\u00e8ves n\u2019avaient jamais post\u00e9 de vid\u00e9o avant de commencer. On t\u2019apprend tout : la cr\u00e9ation de contenu, l\u2019algorithme, la s\u00e9lection de produits.",
+ q: "C\u2019est quoi la diff\u00e9rence avec une \u00ab agence web \u00bb classique ?",
+ a: "Je ne vous vends pas un site pour faire joli. Je construis un syst\u00e8me complet : site + Google + preuves sociales. L\u2019objectif : que votre t\u00e9l\u00e9phone sonne avec des vrais clients, pas des curieux.",
},
{
- question: "Combien faut-il de followers pour d\u00e9marrer l\u2019affiliation TikTok Shop ?",
- answer:
- "TikTok Shop demande un minimum de 1 500 followers pour acc\u00e9der au programme d\u2019affiliation. Si tu ne les as pas encore, notre formation t\u2019apprend \u00e0 les atteindre rapidement gr\u00e2ce \u00e0 des strat\u00e9gies de contenu \u00e9prouv\u00e9es.",
+ q: "Je me suis d\u00e9j\u00e0 fait avoir par un call center, pourquoi vous faire confiance ?",
+ a: "Je suis bas\u00e9 \u00e0 Flines-lez-Raches, pas dans un bureau \u00e0 Paris. On peut se voir en vrai. Je travaille avec des artisans du coin, vous pouvez v\u00e9rifier mes r\u00e9alisations et appeler mes clients.",
},
{
- question: "Combien de temps dois-je consacrer par jour ?",
- answer:
- "Nous recommandons un minimum de 2 heures par jour pour des r\u00e9sultats optimaux. Le programme est con\u00e7u pour \u00eatre flexible et s\u2019adapter \u00e0 ton emploi du temps, que tu sois \u00e9tudiant, salari\u00e9 ou parent.",
+ q: "J\u2019ai d\u00e9j\u00e0 une page Facebook, c\u2019est pas suffisant ?",
+ a: "Facebook c\u2019est bien pour montrer vos chantiers, mais personne ne cherche \u00ab couvreur Douai \u00bb sur Facebook. 90% des gens passent par Google. Sans site optimis\u00e9, vos concurrents r\u00e9cup\u00e8rent vos clients.",
},
{
- question: "Quand vais-je voir mes premi\u00e8res commissions TikTok Shop ?",
- answer:
- "La plupart de nos \u00e9l\u00e8ves g\u00e9n\u00e8rent leurs premi\u00e8res commissions dans les 2 \u00e0 4 premi\u00e8res semaines. Les r\u00e9sultats varient selon ton implication et le temps consacr\u00e9. Ce n\u2019est pas un sch\u00e9ma d\u2019argent facile mais un vrai business qui demande du travail.",
+ q: "Combien de temps pour avoir des r\u00e9sultats ?",
+ a: "Le site est en ligne en 2-3 semaines. Les premiers r\u00e9sultats Google arrivent en 4 \u00e0 8 semaines selon votre zone et votre m\u00e9tier. Mais le site commence \u00e0 travailler pour vous d\u00e8s le jour 1.",
},
{
- question: "Dois-je investir de l\u2019argent en plus du programme ?",
- answer:
- "Non. L\u2019affiliation TikTok Shop ne n\u00e9cessite aucun stock ni investissement suppl\u00e9mentaire. Tu gagnes des commissions sur les ventes g\u00e9n\u00e9r\u00e9es par tes vid\u00e9os. Tout ce qu\u2019il te faut c\u2019est un smartphone et une connexion internet.",
+ q: "J\u2019y connais rien en informatique, c\u2019est un probl\u00e8me ?",
+ a: "C\u2019est justement mon m\u00e9tier. Je m\u2019occupe de tout : cr\u00e9ation, mise en ligne, r\u00e9f\u00e9rencement. Vous, vous continuez vos chantiers. Et si vous voulez modifier quelque chose, un simple message suffit.",
},
{
- question: "Comment se d\u00e9roule le coaching HookLab ?",
- answer:
- "Le coaching comprend des modules vid\u00e9o hebdomadaires, des appels de groupe chaque semaine, un support WhatsApp illimit\u00e9, et l\u2019acc\u00e8s \u00e0 une communaut\u00e9 priv\u00e9e d\u2019entrepreneurs. Tu avances \u00e0 ton rythme avec un suivi personnalis\u00e9.",
+ q: "Est-ce que je pourrai modifier le site moi-m\u00eame ?",
+ a: "Oui. J\u2019utilise un syst\u00e8me de gestion de contenu (CMS) simple. Vous pouvez ajouter des photos de chantier ou modifier un texte aussi facilement qu\u2019un post Facebook.",
},
{
- question: "Puis-je payer la formation en plusieurs fois ?",
- answer:
- "Oui, le paiement se fait en 2 mensualit\u00e9s de 490\u20ac. Le premier paiement donne acc\u00e8s imm\u00e9diat au programme, le second est pr\u00e9lev\u00e9 automatiquement le mois suivant. Le paiement est s\u00e9curis\u00e9 via Stripe.",
- },
- {
- question: "Y a-t-il une garantie de remboursement ?",
- answer:
- "Oui, nous offrons une garantie satisfait ou rembours\u00e9 de 14 jours. Si le programme ne te convient pas, tu es rembours\u00e9 int\u00e9gralement, sans condition. Nous croyons en la qualit\u00e9 de notre formation.",
- },
- {
- question: "TikTok Shop est-il disponible en France ?",
- answer:
- "Oui ! TikTok Shop a \u00e9t\u00e9 lanc\u00e9 en France et le programme d\u2019affiliation est ouvert aux cr\u00e9ateurs fran\u00e7ais. Le march\u00e9 fran\u00e7ais a g\u00e9n\u00e9r\u00e9 plus de 50 millions d\u2019euros en seulement 2 mois fin 2025, ce qui montre le potentiel \u00e9norme de cette plateforme.",
+ q: "Vous intervenez uniquement dans le Nord ?",
+ a: "Ma zone principale c\u2019est le Douaisis, l\u2019Orch\u00e9sien, le Valenciennois et l\u2019Arrageois. Mais je peux travailler avec des artisans partout en Hauts-de-France.",
},
];
@@ -61,19 +43,16 @@ export default function FAQ() {
const faqJsonLd = {
"@context": "https://schema.org",
"@type": "FAQPage",
- mainEntity: faqs.map((faq) => ({
+ mainEntity: faqs.map((f) => ({
"@type": "Question",
- name: faq.question,
- acceptedAnswer: {
- "@type": "Answer",
- text: faq.answer,
- },
+ name: f.q,
+ acceptedAnswer: { "@type": "Answer", text: f.a },
})),
};
return (
-
- {/* FAQ Structured Data for Google Rich Results */}
+
+ {/* JSON-LD for Google */}