diff --git a/app/macon/MaconClient.tsx b/app/macon/MaconClient.tsx new file mode 100644 index 0000000..0a5d428 --- /dev/null +++ b/app/macon/MaconClient.tsx @@ -0,0 +1,197 @@ +"use client"; + +import { useState } from "react"; +import MagicReveal from "@/components/ui/MagicReveal"; +import Button from "@/components/ui/Button"; + +interface MaconClientProps { + type?: "slider" | "form" | "cert"; + certName?: string; + avantLabel?: string; + apresLabel?: string; +} + +export default function MaconClient({ type, certName, avantLabel, apresLabel }: MaconClientProps) { + // Cert badge with popup + if (!type || type === "cert") { + return ; + } + + if (type === "slider") { + return ( + + ); + } + + if (type === "form") { + return ; + } + + return null; +} + +function CertBadge({ name }: { name: string }) { + const [open, setOpen] = useState(false); + + const infos: Record = { + "D\u00e9cennale": "La garantie d\u00e9cennale couvre tous les dommages compromettant la solidit\u00e9 de l\u2019ouvrage pendant 10 ans apr\u00e8s la r\u00e9ception des travaux.", + "Qualibat": "Qualibat est l\u2019organisme de r\u00e9f\u00e9rence pour la qualification des entreprises du b\u00e2timent. Gage de comp\u00e9tence et de s\u00e9rieux.", + "RGE": "Le label RGE (Reconnu Garant de l\u2019Environnement) vous permet de b\u00e9n\u00e9ficier des aides de l\u2019\u00c9tat : MaPrimeR\u00e9nov\u2019, CEE, \u00e9co-PTZ.", + }; + + return ( + <> + setOpen(true)} + className="flex items-center gap-2 bg-white/10 hover:bg-white/20 border border-white/20 rounded-full px-4 py-1.5 transition-colors cursor-pointer" + > + + + + {name} + + + {/* Popup */} + {open && ( + setOpen(false)}> + e.stopPropagation()}> + + + + + + + {name} + + + {infos[name] || "Certification professionnelle v\u00e9rifi\u00e9e."} + + setOpen(false)} + className="w-full bg-[#1b2a4a] text-white font-semibold text-sm py-2.5 rounded-xl hover:bg-[#1b2a4a]/90 transition-colors cursor-pointer" + > + Compris + + + + )} + > + ); +} + +function DevisForm() { + const [step, setStep] = useState<"type" | "details" | "urgence">("type"); + const [projectType, setProjectType] = useState(""); + + if (step === "urgence") { + return ( + + + + + + + Urgence d\u00e9tect\u00e9e ! + Pour une intervention rapide, appelez directement le patron : + + + + + APPELER LE PATRON + + Disponible 7j/7 pour les urgences + setStep("type")} className="text-gray-400 hover:text-gray-600 text-sm mt-4 underline cursor-pointer"> + ← Retour au formulaire + + + ); + } + + if (step === "details") { + return ( + + + 2/2 + D\u00e9tails du projet + + Type : {projectType} + + + Surface approximative + + Moins de 50m\u00b2 + 50 \u00e0 100m\u00b2 + 100 \u00e0 200m\u00b2 + Plus de 200m\u00b2 + + + + Votre nom + + + + T\u00e9l\u00e9phone + + + + Ville + + + Envoyer ma demande de devis + setStep("type")} className="w-full text-gray-400 hover:text-gray-600 text-sm underline cursor-pointer"> + ← Retour + + + + ); + } + + return ( + + + 1/2 + Quel type de projet ? + + + {[ + { label: "Urgence fuite / d\u00e9g\u00e2t", urgent: true }, + { label: "R\u00e9novation toiture", urgent: false }, + { label: "Ravalement fa\u00e7ade", urgent: false }, + { label: "Ma\u00e7onnerie neuve", urgent: false }, + { label: "Charpente / Isolation", urgent: false }, + { label: "Autre projet", urgent: false }, + ].map((item) => ( + { + setProjectType(item.label); + if (item.urgent) { + setStep("urgence"); + } else { + setStep("details"); + } + }} + className={`p-4 rounded-xl border-2 text-left transition-all cursor-pointer hover:shadow-md ${ + item.urgent + ? "border-red-300 bg-red-50 hover:border-red-500" + : "border-gray-200 bg-[#f8f6f3] hover:border-orange" + }`} + > + + {item.urgent && "\u26a0\ufe0f "}{item.label} + + + ))} + + + ); +} diff --git a/app/macon/page.tsx b/app/macon/page.tsx index 06eeedb..09180f0 100644 --- a/app/macon/page.tsx +++ b/app/macon/page.tsx @@ -1,148 +1,208 @@ import type { Metadata } from "next"; import Link from "next/link"; import Button from "@/components/ui/Button"; +import MaconClient from "./MaconClient"; export const metadata: Metadata = { - title: "D\u00e9mo Site Ma\u00e7on / Couvreur - Pack Gros \u0152uvre", + title: "D\u00e9mo Site Ma\u00e7on / Couvreur - L'Expertise Solide | HookLab", description: - "D\u00e9couvrez le mod\u00e8le de site HookLab pour ma\u00e7ons et couvreurs. Galerie Avant/Apr\u00e8s, bouton Urgence Fuite, optimis\u00e9 SEO local.", + "Mod\u00e8le de site HookLab pour ma\u00e7ons, couvreurs et charpentiers. Slider Avant/Apr\u00e8s interactif, badges garanties, formulaire intelligent, bouton urgence.", }; -const avantApres = [ - { avant: "Toiture v\u00e9tuste - Tuiles cass\u00e9es", apres: "R\u00e9fection compl\u00e8te en tuiles m\u00e9caniques" }, - { avant: "Fa\u00e7ade fissur\u00e9e - Enduit d\u00e9grad\u00e9", apres: "Ravalement complet + isolation" }, - { avant: "Chemin\u00e9e en ruine", apres: "Reconstruction + \u00e9tanch\u00e9it\u00e9" }, -]; - export default function MaconDemo() { return ( - - {/* Nav simplifi\u00e9e */} - + + {/* Nav avec badge dispo */} + - ← Retour HookLab + ← HookLab | - D\u00e9mo : Pack Gros \u0152uvre + [Votre Entreprise] — Ma\u00e7onnerie & Couverture - - - - - Urgence Fuite - + + {/* Badge dispo */} + + + Dispo imm\u00e9diate + + + + + + Urgence Fuite + Appeler + + + {/* Certifications en haut - immanquables */} + + + {["D\u00e9cennale", "Qualibat", "RGE"].map((cert) => ( + + ))} + + + {/* Hero */} - + - Ma\u00e7onnerie & Couverture + Ma\u00e7onnerie · Couverture · Charpente - - [Votre Entreprise] — Ma\u00e7on Couvreur dans le Nord + + Vos chantiers parlent pour vous.{" "} + Votre site aussi. - - Plus de 15 ans d’exp\u00e9rience en ma\u00e7onnerie et couverture. Devis gratuit sous 24h. - Intervention rapide sur Douai, Orchies et Valenciennes. + + Dans le gros \u0153uvre, le client a peur. Peur que \u00e7a s’\u00e9croule, peur des fuites, + peur que vous partiez avec l’acompte. Ce site est une machine \u00e0 tuer les objections. + + + Intervention rapide sur Douai, Orchies, Valenciennes et environs. - - Demander un Devis Gratuit - + + + Demander un Devis Toiture + + - Urgence Fuite : Appeler Maintenant + APPELER LE PATRON - {/* Avant / Apr\u00e8s */} - + {/* Slider Magic Reveal - Avant/Apr\u00e8s */} + - - Galerie Avant / Apr\u00e8s + + La preuve par l’image — Avant / Apr\u00e8s - La preuve par l’image. Nos chantiers parlent d’eux-m\u00eames. + Glissez la barre pour voir la transformation. Impact visuel imm\u00e9diat. + + + + {[ + { avant: "Toiture v\u00e9tuste \u2014 Tuiles cass\u00e9es, infiltrations", apres: "R\u00e9fection compl\u00e8te en tuiles m\u00e9caniques" }, + { avant: "Fa\u00e7ade fissur\u00e9e \u2014 Enduit d\u00e9grad\u00e9", apres: "Ravalement complet + isolation thermique" }, + { avant: "Chemin\u00e9e en ruine \u2014 Danger effondrement", apres: "Reconstruction + \u00e9tanch\u00e9it\u00e9 garantie" }, + ].map((item, i) => ( + + ))} + + + + + {/* Garanties */} + + + + + Vos garanties + + Des certifications qui prot\u00e8gent votre investissement. - {avantApres.map((item, i) => ( - - - - - Avant - {item.avant} - - - - - Apr\u00e8s - {item.apres} - - - + {[ + { + name: "Garantie D\u00e9cennale", + desc: "Votre ouvrage est couvert pendant 10 ans. En cas de d\u00e9faut structurel, les r\u00e9parations sont prises en charge int\u00e9gralement.", + icon: "\ud83d\udee1\ufe0f", + }, + { + name: "Qualibat RGE", + desc: "Cette certification vous garantit des aides de l\u2019\u00c9tat (MaPrimeR\u00e9nov\u2019, CEE). Jusqu\u2019\u00e0 90% de vos travaux financ\u00e9s.", + icon: "\u2705", + }, + { + name: "Assurance Responsabilit\u00e9", + desc: "Chaque chantier est assur\u00e9. Vous ne prenez aucun risque financier, m\u00eame en cas d\u2019impr\u00e9vu.", + icon: "\ud83d\udcbc", + }, + ].map((g, i) => ( + + {g.icon} + {g.name} + {g.desc} ))} - {/* Avis */} - + {/* Avis clients */} + - + Ce que disent nos clients {[ - { name: "Marc D.", ville: "Douai", text: "Toiture refaite en 3 jours. Propre, ponctuel, prix respect\u00e9. Je recommande \u00e0 100%." }, - { name: "Sophie L.", ville: "Orchies", text: "Fuite d\u2019urgence un dimanche. Ils sont venus en 2h. Travail impeccable." }, + { name: "Marc D.", ville: "Douai", text: "Toiture refaite en 3 jours. Propre, ponctuel, prix respect\u00e9. Je recommande \u00e0 100%.", note: 5 }, + { name: "Sophie L.", ville: "Orchies", text: "Fuite d\u2019urgence un dimanche. Ils sont venus en 2h. Travail impeccable et prix honn\u00eate.", note: 5 }, + { name: "Patrick M.", ville: "Valenciennes", text: "Ravalement fa\u00e7ade complet. R\u00e9sultat magnifique, les voisins nous demandent le contact !", note: 5 }, + { name: "Isabelle R.", ville: "Arleux", text: "Charpente trait\u00e9e et renforc\u00e9e. \u00c9quipe s\u00e9rieuse, devis respect\u00e9 au centime pr\u00e8s.", note: 5 }, ].map((avis, i) => ( - + - {[...Array(5)].map((_, j) => ( + {[...Array(avis.note)].map((_, j) => ( ))} - “{avis.text}” - {avis.name} — {avis.ville} + “{avis.text}” + {avis.name} — {avis.ville} ))} - {/* CTA */} - + {/* Formulaire intelligent */} + - Ceci est une d\u00e9mo HookLab + + + Demander un devis gratuit + + Formulaire intelligent : on filtre pour ne recevoir que les vrais projets. + + + + + + {/* CTA HookLab */} + + + Ceci est une d\u00e9mo HookLab - Vous voulez le m\u00eame site pour votre entreprise ? + Vous voulez le m\u00eame site pour votre entreprise ? - - Imaginez votre logo, vos photos et votre num\u00e9ro \u00e0 la place. C’est exactement ce que je construis pour vous. + + Imaginez votre logo, vos photos de chantier et votre num\u00e9ro \u00e0 la place. C’est exactement ce que je construis pour vous. - + Demander Mon Audit Gratuit diff --git a/app/paysagiste/PaysagisteClient.tsx b/app/paysagiste/PaysagisteClient.tsx new file mode 100644 index 0000000..cb88859 --- /dev/null +++ b/app/paysagiste/PaysagisteClient.tsx @@ -0,0 +1,105 @@ +"use client"; + +import { useState } from "react"; + +interface Realisation { + titre: string; + type: string; + lieu: string; + saison: string; +} + +interface PaysagisteClientProps { + realisations?: Realisation[]; + whatsapp?: boolean; +} + +export default function PaysagisteClient({ realisations, whatsapp }: PaysagisteClientProps) { + if (whatsapp) { + return ; + } + + if (realisations) { + return ; + } + + return null; +} + +function WhatsAppButton() { + return ( + + + + + + Je veux le m\u00eame jardin ! + + + ); +} + +function GalerieFiltrable({ realisations }: { realisations: Realisation[] }) { + const [filter, setFilter] = useState("Tous"); + const types = ["Tous", "Terrasses", "Plantations", "All\u00e9es", "Entretien"]; + + const filtered = filter === "Tous" ? realisations : realisations.filter((r) => r.type === filter); + + return ( + <> + {/* Filtres */} + + {types.map((t) => ( + setFilter(t)} + className={`px-4 py-2 text-sm font-semibold rounded-full transition-colors cursor-pointer ${ + filter === t + ? "bg-green-600 text-white" + : "bg-gray-100 text-gray-500 hover:bg-gray-200" + }`} + > + {t} + + ))} + + + {/* Grille */} + + {filtered.map((r, i) => ( + + + + + + + Photo HD du projet + + {/* Tag type */} + + {r.type} + + + + {r.titre} + + + + + {r.lieu} + + + + ))} + + > + ); +} diff --git a/app/paysagiste/page.tsx b/app/paysagiste/page.tsx index e78d9e3..e31db4a 100644 --- a/app/paysagiste/page.tsx +++ b/app/paysagiste/page.tsx @@ -1,129 +1,187 @@ import type { Metadata } from "next"; import Link from "next/link"; import Button from "@/components/ui/Button"; +import PaysagisteClient from "./PaysagisteClient"; export const metadata: Metadata = { - title: "D\u00e9mo Site Paysagiste / Peintre - Pack Esth\u00e9tique", + title: "D\u00e9mo Site Paysagiste / Peintre - L'Artisan Cr\u00e9ateur | HookLab", description: - "D\u00e9couvrez le mod\u00e8le de site HookLab pour paysagistes et peintres. Design \u00e9pur\u00e9, galerie photo immersive, filtrage Cr\u00e9ation vs Entretien.", + "Mod\u00e8le de site HookLab pour paysagistes, peintres et d\u00e9corateurs. Galerie filtrable, saisonnalit\u00e9 intelligente, bouton WhatsApp flottant.", }; const realisations = [ - { titre: "Jardin contemporain", type: "Cr\u00e9ation", lieu: "Douai" }, - { titre: "Terrasse bois & pergola", type: "Cr\u00e9ation", lieu: "Orchies" }, - { titre: "Entretien parc 2000m\u00b2", type: "Entretien", lieu: "Valenciennes" }, - { titre: "Am\u00e9nagement piscine", type: "Cr\u00e9ation", lieu: "Arleux" }, - { titre: "Taille de haies & \u00e9lagage", type: "Entretien", lieu: "Flines-lez-Raches" }, - { titre: "Jardin japonais", type: "Cr\u00e9ation", lieu: "Saint-Amand" }, + { titre: "Jardin contemporain avec terrasse composite", type: "Terrasses", lieu: "Orchies", saison: "printemps" }, + { titre: "Am\u00e9nagement complet piscine + cl\u00f4ture", type: "Terrasses", lieu: "Douai", saison: "printemps" }, + { titre: "Cr\u00e9ation massif fleuri 4 saisons", type: "Plantations", lieu: "Valenciennes", saison: "printemps" }, + { titre: "Haie brise-vue naturelle en bambou", type: "Plantations", lieu: "Arleux", saison: "automne" }, + { titre: "All\u00e9e carrossable en pav\u00e9s anciens", type: "All\u00e9es", lieu: "Saint-Amand", saison: "automne" }, + { titre: "Jardin japonais zen avec bassin", type: "Plantations", lieu: "Flines-lez-Raches", saison: "printemps" }, + { titre: "Taille architecturale haies buis", type: "Entretien", lieu: "Denain", saison: "automne" }, + { titre: "Entretien annuel parc 3000m\u00b2", type: "Entretien", lieu: "Douai", saison: "automne" }, ]; export default function PaysagisteDemo() { + const currentMonth = new Date().getMonth(); + const isSpringSummer = currentMonth >= 2 && currentMonth <= 8; + return ( - - {/* Nav simplifi\u00e9e */} - + + {/* Nav \u00e9pur\u00e9e */} + - - ← Retour HookLab + + ← HookLab - | - - D\u00e9mo : Pack Esth\u00e9tique + | + + [Votre Entreprise] — Paysagiste Devis Gratuit + {/* Banni\u00e8re saisonni\u00e8re */} + + {isSpringSummer + ? "C\u2019est la saison ! Cr\u00e9ation de terrasses & plantations \u2014 Demandez votre devis maintenant" + : "Pr\u00e9parez le printemps ! Taille, \u00e9lagage & entretien d\u2019automne \u2014 Planifiez vos travaux" + } + + {/* Hero \u00e9pur\u00e9 */} - - + + - - Paysagisme & Espaces Verts + + Paysagisme · Espaces Verts · D\u00e9coration - - [Votre Entreprise] — Paysagiste dans le Nord + + Ne vendez pas des travaux,{" "} + vendez du r\u00eave. - - Cr\u00e9ation de jardins d’exception et entretien d’espaces verts. - La nature est notre m\u00e9tier, la beaut\u00e9 notre signature. + + Pour un jardin ou un int\u00e9rieur, votre client n’ach\u00e8te pas de la technique, + il ach\u00e8te une « ambiance ». Ce site est votre galerie d’art. + + + Cr\u00e9ations à Douai, Orchies, Valenciennes, Saint-Amand et environs. - - Demander un Devis Cr\u00e9ation - - - Devis Entretien - + + + Demander un Devis Cr\u00e9ation + + + + + Devis Entretien + + - {/* R\u00e9alisations avec filtrage */} - + {/* R\u00e9alisations filtrables */} + - - Nos r\u00e9alisations + + Nos r\u00e9alisations - - Filtrez par type de projet pour trouver l’inspiration. + + Des cr\u00e9ations dans des lieux que vous connaissez. Projetez-vous. - {/* Filtre visuel (d\u00e9mo statique) */} - - Tous - Cr\u00e9ation - Entretien - + + + - - {realisations.map((r, i) => ( - - - - - - - Photo du projet - - - - - {r.titre} - - {r.type} - - - {r.lieu} + {/* Immersion locale */} + + + + Des jardins pr\u00e8s de chez vous + + + {["Douai", "Orchies", "Valenciennes", "Arleux", "Saint-Amand", "Denain"].map((ville) => ( + + + + + + + Jardin \u00e0 {ville} ))} - {/* CTA */} - + {/* Formulaire */} + - Ceci est une d\u00e9mo HookLab + + + Demander un devis gratuit + + D\u00e9crivez votre projet, on vous recontacte sous 24h. + + + + + Type de projet + + Cr\u00e9ation de jardin complet + Terrasse / Am\u00e9nagement + Plantation / Massifs + Entretien r\u00e9gulier + Taille / \u00c9lagage + Cl\u00f4ture / Brise-vue + + + + Votre nom + + + + T\u00e9l\u00e9phone + + + + D\u00e9crivez votre projet + + + + Envoyer ma demande + + + + + + + {/* WhatsApp flottant */} + + + {/* CTA HookLab */} + + + Ceci est une d\u00e9mo HookLab - Ce design vous pla\u00eet ? Il peut être à vous. + Ce design vous pla\u00eet ? Il peut \u00eatre \u00e0 vous. - + Imaginez vos plus beaux jardins mis en valeur comme \u00e7a. C’est ce que je cr\u00e9e pour les paysagistes du Nord. - + Demander Mon Audit Gratuit diff --git a/app/plombier/PlombierClient.tsx b/app/plombier/PlombierClient.tsx new file mode 100644 index 0000000..a4eaa60 --- /dev/null +++ b/app/plombier/PlombierClient.tsx @@ -0,0 +1,189 @@ +"use client"; + +import { useState } from "react"; +import Button from "@/components/ui/Button"; + +interface PlombierClientProps { + type: "diagnostic" | "sticky"; +} + +export default function PlombierClient({ type }: PlombierClientProps) { + if (type === "sticky") return ; + if (type === "diagnostic") return ; + return null; +} + +function StickyCall() { + return ( + + + + + + Appeler maintenant — 06 04 40 81 57 + + Devis gratuit · Pas de surprise + + ); +} + +function Diagnostic() { + const [step, setStep] = useState(0); + const [answers, setAnswers] = useState([]); + + const questions = [ + { + question: "Quel est le probl\u00e8me ?", + options: [ + { icon: "\ud83d\udca7", label: "Fuite d\u2019eau" }, + { icon: "\ud83d\udebd", label: "Canalisation bouch\u00e9e" }, + { icon: "\ud83d\udd25", label: "Panne chauffe-eau" }, + { icon: "\ud83d\udee0\ufe0f", label: "Autre probl\u00e8me" }, + ], + }, + { + question: "Quel niveau d\u2019urgence ?", + options: [ + { icon: "\ud83d\udea8", label: "Urgent (fuite active)" }, + { icon: "\u23f0", label: "Sous 48h" }, + { icon: "\ud83d\udcc5", label: "Travaux planifi\u00e9s" }, + ], + }, + { + question: "O\u00f9 \u00eates-vous situ\u00e9 ?", + options: [ + { icon: "\ud83d\udccd", label: "Douai / Environs" }, + { icon: "\ud83d\udccd", label: "Orchies / Environs" }, + { icon: "\ud83d\udccd", label: "Valenciennes / Environs" }, + { icon: "\ud83d\udccd", label: "Autre secteur" }, + ], + }, + ]; + + if (step >= questions.length) { + const isUrgent = answers[1]?.includes("Urgent"); + const isOutOfZone = answers[2]?.includes("Autre"); + + if (isOutOfZone) { + return ( + + + \ud83d\udccd + + Vous \u00eates hors de notre zone principale + + Notre rayon d’action est Douai + 25km. Appelez-nous quand m\u00eame, + on trouvera peut-\u00eatre une solution ! + + + Appeler quand m\u00eame + + { setStep(0); setAnswers([]); }} className="block mx-auto mt-4 text-gray-400 hover:text-gray-600 text-sm underline cursor-pointer"> + Recommencer le diagnostic + + + ); + } + + if (isUrgent) { + return ( + + + \ud83d\udea8 + + Urgence d\u00e9tect\u00e9e ! + + {answers[0]} — {answers[2]} + + Pour une intervention imm\u00e9diate, appelez directement : + + + + + APPELER MAINTENANT + + Disponible 7j/7 · Devis gratuit + + ); + } + + // Non urgent + return ( + + + + \u2705 + + Diagnostic re\u00e7u ! + + {answers[0]} — {answers[1]} — {answers[2]} + + + + + Votre t\u00e9l\u00e9phone + + + + Pr\u00e9cisions (facultatif) + + + + Envoyer — On vous rappelle sous 24h + + + { setStep(0); setAnswers([]); }} className="block mx-auto mt-4 text-gray-400 hover:text-gray-600 text-sm underline cursor-pointer"> + Recommencer + + + ); + } + + const q = questions[step]; + + return ( + + {/* Progress */} + + {questions.map((_, i) => ( + + ))} + + + {q.question} + + {q.options.map((opt) => ( + { + setAnswers([...answers, opt.label]); + setStep(step + 1); + }} + className="p-4 rounded-xl border-2 border-gray-200 bg-gray-50 hover:border-[#3b82f6] hover:shadow-md text-left transition-all cursor-pointer" + > + {opt.icon} + {opt.label} + + ))} + + + {step > 0 && ( + { setStep(step - 1); setAnswers(answers.slice(0, -1)); }} + className="mt-4 text-gray-400 hover:text-gray-600 text-sm underline cursor-pointer" + > + ← Retour + + )} + + ); +} diff --git a/app/plombier/page.tsx b/app/plombier/page.tsx index 96b3f3a..d3d9ec8 100644 --- a/app/plombier/page.tsx +++ b/app/plombier/page.tsx @@ -1,169 +1,210 @@ import type { Metadata } from "next"; import Link from "next/link"; import Button from "@/components/ui/Button"; +import PlombierClient from "./PlombierClient"; export const metadata: Metadata = { - title: "D\u00e9mo Site Plombier / \u00c9lectricien - Pack Urgence & Service", + title: "D\u00e9mo Site Plombier / \u00c9lectricien - L'Intervention \u00c9clair | HookLab", description: - "D\u00e9couvrez le mod\u00e8le de site HookLab pour plombiers et \u00e9lectriciens. Chargement \u00e9clair, tarifs clairs, formulaire de diagnostic rapide.", + "Mod\u00e8le de site HookLab pour plombiers, \u00e9lectriciens et serruriers. Bouton d\u2019appel sticky, diagnostic en ligne, zone d\u2019intervention, tarifs clairs.", }; const tarifs = [ { service: "D\u00e9pannage fuite", prix: "\u00c0 partir de 89\u20ac", urgence: true }, - { service: "Remplacement chauffe-eau", prix: "\u00c0 partir de 350\u20ac", urgence: false }, { service: "D\u00e9bouchage canalisation", prix: "\u00c0 partir de 120\u20ac", urgence: true }, - { service: "Installation sanitaire", prix: "Sur devis", urgence: false }, + { service: "Remplacement chauffe-eau", prix: "\u00c0 partir de 350\u20ac", urgence: false }, + { service: "Installation sanitaire compl\u00e8te", prix: "Sur devis", urgence: false }, + { service: "Recherche de fuite", prix: "\u00c0 partir de 150\u20ac", urgence: true }, + { service: "R\u00e9novation salle de bain", prix: "Sur devis", urgence: false }, +]; + +const avis = [ + { name: "Laurent P.", ville: "Douai", text: "Fuite \u00e0 22h un samedi. Intervention en 45 min. Prix correct, travail pro. Merci !", note: 5 }, + { name: "Marie C.", ville: "Orchies", text: "Chauffe-eau en panne en plein hiver. Remplac\u00e9 le lendemain matin. Service impeccable.", note: 5 }, + { name: "Jean-Marc B.", ville: "Valenciennes", text: "Canalisation bouch\u00e9e, devis clair au t\u00e9l\u00e9phone, pas de surprise \u00e0 la facture. Rare !", note: 5 }, ]; export default function PlombierDemo() { return ( - - {/* Nav urgence */} - + + {/* Nav avec avis + t\u00e9l */} + - - ← Retour HookLab + + ← HookLab - | + | - D\u00e9mo : Pack Urgence + [Votre Entreprise] — Plombier - - - - - URGENCE 7j/7 - + + {/* Avis Google */} + + + {[...Array(5)].map((_, i) => ( + + + + ))} + + 4.9/5 + + + + + + 06 04 40 81 57 + + - {/* Hero rapide */} - + {/* Hero ultra-direct */} + Disponible 7j/7 — Intervention rapide - - [Votre Entreprise] — Plombier dans le Nord + + Convaincre en{" "} + 3 secondes chrono. - - Fuite, panne, urgence ? Intervention rapide sur Douai, Orchies - et Valenciennes. Tarifs transparents, devis gratuit. + + Quand un client a une fuite d’eau ou une panne de courant, il ne veut pas lire + votre histoire. Il veut un num\u00e9ro, un prix, et une arriv\u00e9e rapide. + + + D\u00e9pannage Douai · Orchies · Valenciennes · Denain · Saint-Amand · Arleux - + Appeler Maintenant + Pas de surprise : devis gratuit avant intervention {/* Tarifs clairs */} - + - - Tarifs transparents + + Tarifs transparents - Pas de surprise. Vous savez ce que vous payez. + Pas de surprise. Vous savez ce que vous payez avant qu’on se d\u00e9place. {tarifs.map((t, i) => ( - + - {t.urgence && ( - - )} - {t.service} - {t.urgence && ( - Urgence - )} + {t.urgence && } + {t.service} + {t.urgence && Urgence} - {t.prix} + {t.prix} ))} - {/* Diagnostic rapide */} - + {/* Diagnostic en ligne */} + - - Diagnostic rapide + + Diagnostic en ligne - D\u00e9crivez votre probl\u00e8me en 30 secondes. On vous rappelle avec une solution. + 3 questions simples. On qualifie la panne avant de d\u00e9crocher. + + + - - - - Type de probl\u00e8me - - Fuite d'eau - Canalisation bouch\u00e9e - Panne chauffe-eau - Probl\u00e8me radiateur - Autre - - - - Niveau d'urgence - - - Urgent - Fuite active - - - Mod\u00e9r\u00e9 - Sous 48h - - - Planifi\u00e9 - Travaux - + {/* Avis */} + + + + Avis Google v\u00e9rifi\u00e9s + + + {avis.map((a, i) => ( + + + {[...Array(a.note)].map((_, j) => ( + + + + ))} + “{a.text}” + {a.name} — {a.ville} - - Votre t\u00e9l\u00e9phone - - - - Envoyer le Diagnostic - - + ))} - {/* CTA */} - + {/* Zone d'intervention avec carte */} + + + + + Zone d’intervention + + Douai + 25km. D\u00e9pannage rapide dans tout le secteur. + + + + + + + + {["Douai", "Orchies", "Valenciennes", "Denain", "Saint-Amand", "Arleux", "Flines-lez-Raches"].map((v) => ( + {v} + ))} + + + + + Vous \u00eates hors zone ? Contactez-nous, on trouvera une solution. + + + + + {/* Sticky Call Mobile */} + + + {/* CTA HookLab */} + - Ceci est une d\u00e9mo HookLab + Ceci est une d\u00e9mo HookLab - Ce site peut être le vôtre demain. + Ce site peut \u00eatre le v\u00f4tre demain. - - Un site qui rassure, qui qualifie les urgences, et qui vous fait gagner du temps. C’est ce que je construis pour les plombiers et \u00e9lectriciens du Nord. + + Un site qui rassure, qui qualifie les urgences, et qui vous fait gagner du temps. + C’est ce que je construis pour les plombiers et \u00e9lectriciens du Nord. - + Demander Mon Audit Gratuit diff --git a/app/site-internet-artisan-arleux/page.tsx b/app/site-internet-artisan-arleux/page.tsx new file mode 100644 index 0000000..33a3530 --- /dev/null +++ b/app/site-internet-artisan-arleux/page.tsx @@ -0,0 +1,19 @@ +import type { Metadata } from "next"; +import LocalSeoPage from "@/components/marketing/LocalSeoPage"; + +export const metadata: Metadata = { + title: "Création Site Internet Artisan Arleux (59) | HookLab", + description: + "Création de sites internet pour artisans à Arleux et environs. Visibilité Google, site ultra-rapide, système de confiance. Audit gratuit.", +}; + +export default function Page() { + return ( + + ); +} diff --git a/app/site-internet-artisan-denain/page.tsx b/app/site-internet-artisan-denain/page.tsx new file mode 100644 index 0000000..d7c0c3b --- /dev/null +++ b/app/site-internet-artisan-denain/page.tsx @@ -0,0 +1,19 @@ +import type { Metadata } from "next"; +import LocalSeoPage from "@/components/marketing/LocalSeoPage"; + +export const metadata: Metadata = { + title: "Création Site Internet Artisan Denain (59) | HookLab", + description: + "Sites web professionnels pour artisans du bâtiment à Denain. Maçon, couvreur, plombier, paysagiste. SEO local + audit offert.", +}; + +export default function Page() { + return ( + + ); +} diff --git a/app/site-internet-artisan-douai/page.tsx b/app/site-internet-artisan-douai/page.tsx new file mode 100644 index 0000000..1c22ac5 --- /dev/null +++ b/app/site-internet-artisan-douai/page.tsx @@ -0,0 +1,19 @@ +import type { Metadata } from "next"; +import LocalSeoPage from "@/components/marketing/LocalSeoPage"; + +export const metadata: Metadata = { + title: "Création Site Internet Artisan Douai (59) | HookLab", + description: + "Spécialiste création de sites web pour artisans du bâtiment à Douai et environs. Couvreur, maçon, paysagiste, plombier. Audit gratuit.", +}; + +export default function Page() { + return ( + + ); +} diff --git a/app/site-internet-artisan-orchies/page.tsx b/app/site-internet-artisan-orchies/page.tsx new file mode 100644 index 0000000..e7b6e66 --- /dev/null +++ b/app/site-internet-artisan-orchies/page.tsx @@ -0,0 +1,19 @@ +import type { Metadata } from "next"; +import LocalSeoPage from "@/components/marketing/LocalSeoPage"; + +export const metadata: Metadata = { + title: "Création Site Internet Artisan Orchies (59) | HookLab", + description: + "Création de sites web professionnels pour artisans à Orchies. Couvreur, maçon, paysagiste. Site rapide + SEO local. Audit offert.", +}; + +export default function Page() { + return ( + + ); +} diff --git a/app/site-internet-artisan-saint-amand-les-eaux/page.tsx b/app/site-internet-artisan-saint-amand-les-eaux/page.tsx new file mode 100644 index 0000000..a4131ae --- /dev/null +++ b/app/site-internet-artisan-saint-amand-les-eaux/page.tsx @@ -0,0 +1,19 @@ +import type { Metadata } from "next"; +import LocalSeoPage from "@/components/marketing/LocalSeoPage"; + +export const metadata: Metadata = { + title: "Création Site Internet Artisan Saint-Amand-les-Eaux (59) | HookLab", + description: + "Votre site web professionnel d'artisan à Saint-Amand-les-Eaux. Couvreur, plombier, paysagiste. Conçu pour générer des chantiers. Audit offert.", +}; + +export default function Page() { + return ( + + ); +} diff --git a/app/site-internet-artisan-valenciennes/page.tsx b/app/site-internet-artisan-valenciennes/page.tsx new file mode 100644 index 0000000..8434be7 --- /dev/null +++ b/app/site-internet-artisan-valenciennes/page.tsx @@ -0,0 +1,19 @@ +import type { Metadata } from "next"; +import LocalSeoPage from "@/components/marketing/LocalSeoPage"; + +export const metadata: Metadata = { + title: "Création Site Internet Artisan Valenciennes (59) | HookLab", + description: + "Sites web pour artisans du bâtiment à Valenciennes et Valenciennois. Technologie ultra-rapide, SEO local, résultats concrets. Audit gratuit.", +}; + +export default function Page() { + return ( + + ); +} diff --git a/app/sitemap.ts b/app/sitemap.ts index 7d6e726..bad2252 100644 --- a/app/sitemap.ts +++ b/app/sitemap.ts @@ -1,26 +1,101 @@ import type { MetadataRoute } from "next"; -const BASE_URL = process.env.NEXT_PUBLIC_APP_URL || "https://hooklab.eu"; +const BASE_URL = "https://www.hooklab.eu"; export default function sitemap(): MetadataRoute.Sitemap { + const now = new Date(); + return [ + // Page d'accueil - priorit\u00e9 max { url: BASE_URL, - lastModified: new Date(), + lastModified: now, changeFrequency: "weekly", priority: 1.0, }, + + // D\u00e9mos m\u00e9tiers - pages strat\u00e9giques SEO + { + url: `${BASE_URL}/macon`, + lastModified: now, + changeFrequency: "monthly", + priority: 0.9, + }, + { + url: `${BASE_URL}/paysagiste`, + lastModified: now, + changeFrequency: "monthly", + priority: 0.9, + }, + { + url: `${BASE_URL}/plombier`, + lastModified: now, + changeFrequency: "monthly", + priority: 0.9, + }, + + // Pages SEO locales - site internet artisan + ville + // Douai + { + url: `${BASE_URL}/site-internet-artisan-douai`, + lastModified: now, + changeFrequency: "monthly", + priority: 0.8, + }, + // Orchies + { + url: `${BASE_URL}/site-internet-artisan-orchies`, + lastModified: now, + changeFrequency: "monthly", + priority: 0.8, + }, + // Valenciennes + { + url: `${BASE_URL}/site-internet-artisan-valenciennes`, + lastModified: now, + changeFrequency: "monthly", + priority: 0.8, + }, + // Saint-Amand-les-Eaux + { + url: `${BASE_URL}/site-internet-artisan-saint-amand-les-eaux`, + lastModified: now, + changeFrequency: "monthly", + priority: 0.8, + }, + // Arleux + { + url: `${BASE_URL}/site-internet-artisan-arleux`, + lastModified: now, + changeFrequency: "monthly", + priority: 0.8, + }, + // Denain + { + url: `${BASE_URL}/site-internet-artisan-denain`, + lastModified: now, + changeFrequency: "monthly", + priority: 0.8, + }, + + // L\u00e9gal { url: `${BASE_URL}/mentions-legales`, - lastModified: new Date(), + lastModified: now, changeFrequency: "yearly", - priority: 0.3, + priority: 0.2, }, { url: `${BASE_URL}/confidentialite`, - lastModified: new Date(), + lastModified: now, changeFrequency: "yearly", - priority: 0.3, + priority: 0.2, + }, + { + url: `${BASE_URL}/plan-du-site`, + lastModified: now, + changeFrequency: "yearly", + priority: 0.2, }, ]; } diff --git a/components/marketing/DemosLive.tsx b/components/marketing/DemosLive.tsx index edfc920..75f1743 100644 --- a/components/marketing/DemosLive.tsx +++ b/components/marketing/DemosLive.tsx @@ -3,11 +3,11 @@ import Link from "next/link"; const demos = [ { - title: "Le Pack \u00ab\u00a0Gros \u0152uvre\u00a0\u00bb", - subtitle: "Ma\u00e7on / Couvreur", + title: "L\u2019Expertise Solide", + subtitle: "Pour ceux dont le travail doit durer 100 ans.", pourQui: "Ma\u00e7ons, Couvreurs, Charpentiers.", - pointFort: "La galerie \u00ab\u00a0Avant / Apr\u00e8s\u00a0\u00bb qui prouve votre technique et justifie vos devis.", - fonctionnalite: "Bouton \u00ab\u00a0Urgence Fuite\u00a0\u00bb qui d\u00e9clenche l\u2019appel imm\u00e9diat.", + pointFort: "Slider \u00ab\u00a0Avant / Apr\u00e8s\u00a0\u00bb interactif + badges garanties (D\u00e9cennale, Qualibat, RGE) immanquables.", + fonctionnalite: "Formulaire intelligent : si Urgence Fuite \u2192 bouton rouge \u00ab\u00a0APPELER LE PATRON\u00a0\u00bb.", cta: "Voir la D\u00e9mo Ma\u00e7onnerie", href: "/macon", icon: ( @@ -17,11 +17,11 @@ const demos = [ ), }, { - title: "Le Pack \u00ab\u00a0Esth\u00e9tique\u00a0\u00bb", - subtitle: "Paysagiste / Peintre", + title: "L\u2019Artisan Cr\u00e9ateur", + subtitle: "Pour ceux qui vendent du beau et du confort.", pourQui: "Paysagistes, Peintres, D\u00e9corateurs.", - pointFort: "Un design \u00e9pur\u00e9 qui laisse toute la place \u00e0 la beaut\u00e9 de vos r\u00e9alisations.", - fonctionnalite: "Filtrage \u00ab\u00a0Cr\u00e9ation vs Entretien\u00a0\u00bb pour ne recevoir que les projets \u00e0 forte valeur.", + pointFort: "Galerie filtrable par type + saisonnalit\u00e9 intelligente (le site change selon la saison).", + fonctionnalite: "Bouton WhatsApp flottant \u00ab\u00a0Je veux le m\u00eame jardin\u00a0\u00bb + immersion locale par ville.", cta: "Voir la D\u00e9mo Paysagiste", href: "/paysagiste", icon: ( @@ -31,11 +31,11 @@ const demos = [ ), }, { - title: "Le Pack \u00ab\u00a0Urgence & Service\u00a0\u00bb", - subtitle: "Plombier / \u00c9lec", + title: "L\u2019Intervention \u00c9clair", + subtitle: "Pour ceux qui sauvent la mise (et veulent \u00eatre pay\u00e9s vite).", pourQui: "Plombiers, \u00c9lectriciens, Serruriers.", - pointFort: "Vitesse de chargement \u00e9clair et rassurance imm\u00e9diate (Avis + Tarifs clairs).", - fonctionnalite: "Formulaire de diagnostic rapide pour qualifier la panne avant de vous d\u00e9placer.", + pointFort: "Avis Google en haut + tarifs transparents + bouton d\u2019appel sticky sur mobile.", + fonctionnalite: "Diagnostic en 3 clics : qualifie la panne + d\u00e9tecte si hors zone.", cta: "Voir la D\u00e9mo Plombier", href: "/plombier", icon: ( diff --git a/components/marketing/LocalSeoPage.tsx b/components/marketing/LocalSeoPage.tsx new file mode 100644 index 0000000..a9398dc --- /dev/null +++ b/components/marketing/LocalSeoPage.tsx @@ -0,0 +1,142 @@ +import Link from "next/link"; +import Button from "@/components/ui/Button"; +import Navbar from "@/components/marketing/Navbar"; +import Footer from "@/components/marketing/Footer"; + +interface LocalSeoPageProps { + ville: string; + villeSlug: string; + codePostal: string; + voisines: string[]; +} + +export default function LocalSeoPage({ ville, codePostal, voisines }: LocalSeoPageProps) { + return ( + + + + {/* Hero local */} + + + + {ville} ({codePostal}) et environs + + + Création de site internet pour{" "} + artisans à {ville} + + + Vous êtes artisan à {ville} ou dans le secteur de {voisines[0]} / {voisines[1]} ? + Je crée votre site web professionnel et votre présence Google pour générer + des chantiers qualifiés. Basé à Flines-lez-Raches, je suis votre voisin. + + + + DÉMARRER MON AUDIT GRATUIT + + + + Réponse sous 24h · 100% gratuit · Sans engagement + + + + + {/* M\u00e9tiers couverts */} + + + + Sites web pour tous les métiers du bâtiment à {ville} + + + {[ + "Couvreur", "Ma\u00e7on", "Paysagiste", + "Plombier", "\u00c9lectricien", "Menuisier", + "Charpentier", "Peintre", "Serrurier", + ].map((metier) => ( + + Site internet {metier} + {ville} et environs + + ))} + + + + + {/* Pourquoi HookLab */} + + + + Pourquoi choisir HookLab à {ville} ? + + + {[ + { + title: "Proximit\u00e9 locale", + desc: `Bas\u00e9 \u00e0 Flines-lez-Raches, je connais ${ville} et ses artisans. On peut se voir en vrai.`, + }, + { + title: "Technologie des g\u00e9ants", + desc: "Sites ultra-rapides avec la m\u00eame technologie que Netflix. Google adore la vitesse.", + }, + { + title: "R\u00e9sultats concrets", + desc: "Pas un site pour faire joli. Un syst\u00e8me qui fait sonner votre t\u00e9l\u00e9phone avec des vrais clients.", + }, + ].map((item, i) => ( + + + + + + + + {item.title} + {item.desc} + + + ))} + + + + + {/* D\u00e9mos */} + + + + Testez nos modèles + + + + Démo Maçon / Couvreur + + + Démo Paysagiste + + + Démo Plombier + + + + + + {/* Zone */} + + + + Aussi disponible à {voisines.join(", ")} + + + Je travaille avec des artisans dans tout le Douaisis, l’Orchésien et le Valenciennois. + + + + Réserver Mon Audit Gratuit + + + + + + + + ); +} diff --git a/components/marketing/Navbar.tsx b/components/marketing/Navbar.tsx index e1dab6d..26b2c2e 100644 --- a/components/marketing/Navbar.tsx +++ b/components/marketing/Navbar.tsx @@ -36,13 +36,13 @@ export default function Navbar() { {/* CTA desktop - Phone */} - 06 XX XX XX XX + 06 04 40 81 57 @@ -78,14 +78,14 @@ export default function Navbar() { Qui suis-je setOpen(false)} className="flex items-center justify-center gap-2 bg-orange text-white font-bold text-sm px-5 py-3 rounded-xl mt-2" > - 06 XX XX XX XX + 06 04 40 81 57 )} diff --git a/components/ui/MagicReveal.tsx b/components/ui/MagicReveal.tsx new file mode 100644 index 0000000..77c3899 --- /dev/null +++ b/components/ui/MagicReveal.tsx @@ -0,0 +1,91 @@ +"use client"; + +import { useState, useRef, useCallback } from "react"; + +interface MagicRevealProps { + avantLabel: string; + apresLabel: string; + avantColor?: string; + apresColor?: string; + height?: string; +} + +export default function MagicReveal({ + avantLabel, + apresLabel, + avantColor = "bg-red-50", + apresColor = "bg-green-50", + height = "h-64", +}: MagicRevealProps) { + const [position, setPosition] = useState(50); + const containerRef = useRef(null); + const dragging = useRef(false); + + const updatePosition = useCallback((clientX: number) => { + if (!containerRef.current) return; + const rect = containerRef.current.getBoundingClientRect(); + const x = clientX - rect.left; + const percent = Math.max(0, Math.min(100, (x / rect.width) * 100)); + setPosition(percent); + }, []); + + const handlePointerDown = useCallback((e: React.PointerEvent) => { + dragging.current = true; + (e.target as HTMLElement).setPointerCapture(e.pointerId); + updatePosition(e.clientX); + }, [updatePosition]); + + const handlePointerMove = useCallback((e: React.PointerEvent) => { + if (!dragging.current) return; + updatePosition(e.clientX); + }, [updatePosition]); + + const handlePointerUp = useCallback(() => { + dragging.current = false; + }, []); + + return ( + + {/* Apr\u00e8s (fond complet) */} + + + Apr\u00e8s + {apresLabel} + + + + {/* Avant (clip\u00e9 \u00e0 gauche) */} + + + Avant + {avantLabel} + + + + {/* Barre de s\u00e9paration */} + + + + + + + + + {/* Labels gauche/droite */} + AVANT + APR\u00c8S + + ); +}
+ {infos[name] || "Certification professionnelle v\u00e9rifi\u00e9e."} +
Pour une intervention rapide, appelez directement le patron :
Disponible 7j/7 pour les urgences
Type : {projectType}
+ {item.urgent && "\u26a0\ufe0f "}{item.label} +
- Plus de 15 ans d’exp\u00e9rience en ma\u00e7onnerie et couverture. Devis gratuit sous 24h. - Intervention rapide sur Douai, Orchies et Valenciennes. +
+ Dans le gros \u0153uvre, le client a peur. Peur que \u00e7a s’\u00e9croule, peur des fuites, + peur que vous partiez avec l’acompte. Ce site est une machine \u00e0 tuer les objections. +
+ Intervention rapide sur Douai, Orchies, Valenciennes et environs.
La preuve par l’image. Nos chantiers parlent d’eux-m\u00eames.
Glissez la barre pour voir la transformation. Impact visuel imm\u00e9diat.
Des certifications qui prot\u00e8gent votre investissement.
Avant
{item.avant}
Apr\u00e8s
{item.apres}
{g.desc}
“{avis.text}”
{avis.name} — {avis.ville}
Ceci est une d\u00e9mo HookLab
Formulaire intelligent : on filtre pour ne recevoir que les vrais projets.
- Imaginez votre logo, vos photos et votre num\u00e9ro \u00e0 la place. C’est exactement ce que je construis pour vous. +
+ Imaginez votre logo, vos photos de chantier et votre num\u00e9ro \u00e0 la place. C’est exactement ce que je construis pour vous.
Photo HD du projet
+ + + + {r.lieu} +
- Cr\u00e9ation de jardins d’exception et entretien d’espaces verts. - La nature est notre m\u00e9tier, la beaut\u00e9 notre signature. +
+ Pour un jardin ou un int\u00e9rieur, votre client n’ach\u00e8te pas de la technique, + il ach\u00e8te une « ambiance ». Ce site est votre galerie d’art. +
+ Cr\u00e9ations à Douai, Orchies, Valenciennes, Saint-Amand et environs.
- Filtrez par type de projet pour trouver l’inspiration. +
+ Des cr\u00e9ations dans des lieux que vous connaissez. Projetez-vous.
Photo du projet
{r.lieu}
Jardin \u00e0 {ville}
D\u00e9crivez votre projet, on vous recontacte sous 24h.
+
Imaginez vos plus beaux jardins mis en valeur comme \u00e7a. C’est ce que je cr\u00e9e pour les paysagistes du Nord.
Devis gratuit · Pas de surprise
+ Notre rayon d’action est Douai + 25km. Appelez-nous quand m\u00eame, + on trouvera peut-\u00eatre une solution ! +
+ {answers[0]} — {answers[2]} +
Pour une intervention imm\u00e9diate, appelez directement :
Disponible 7j/7 · Devis gratuit
+ {answers[0]} — {answers[1]} — {answers[2]} +
{opt.label}
- Fuite, panne, urgence ? Intervention rapide sur Douai, Orchies - et Valenciennes. Tarifs transparents, devis gratuit. +
+ Quand un client a une fuite d’eau ou une panne de courant, il ne veut pas lire + votre histoire. Il veut un num\u00e9ro, un prix, et une arriv\u00e9e rapide. +
+ D\u00e9pannage Douai · Orchies · Valenciennes · Denain · Saint-Amand · Arleux
Pas de surprise : devis gratuit avant intervention
Pas de surprise. Vous savez ce que vous payez.
Pas de surprise. Vous savez ce que vous payez avant qu’on se d\u00e9place.
D\u00e9crivez votre probl\u00e8me en 30 secondes. On vous rappelle avec une solution.
3 questions simples. On qualifie la panne avant de d\u00e9crocher.
Urgent
Fuite active
Mod\u00e9r\u00e9
Sous 48h
Planifi\u00e9
Travaux
“{a.text}”
{a.name} — {a.ville}
Douai + 25km. D\u00e9pannage rapide dans tout le secteur.
+ Vous \u00eates hors zone ? Contactez-nous, on trouvera une solution. +
- Un site qui rassure, qui qualifie les urgences, et qui vous fait gagner du temps. C’est ce que je construis pour les plombiers et \u00e9lectriciens du Nord. +
+ Un site qui rassure, qui qualifie les urgences, et qui vous fait gagner du temps. + C’est ce que je construis pour les plombiers et \u00e9lectriciens du Nord.
+ Vous êtes artisan à {ville} ou dans le secteur de {voisines[0]} / {voisines[1]} ? + Je crée votre site web professionnel et votre présence Google pour générer + des chantiers qualifiés. Basé à Flines-lez-Raches, je suis votre voisin. +
+ Réponse sous 24h · 100% gratuit · Sans engagement +
Site internet {metier}
{ville} et environs
{item.title}
{item.desc}
+ Je travaille avec des artisans dans tout le Douaisis, l’Orchésien et le Valenciennois. +
{apresLabel}
{avantLabel}