SPB Git

spb/vrai-prix

Public

Vrai-Prix — l'évaluation du vrai prix des propriétés résidentielles au Québec.

7.1 KB · 194 lines tsx
1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2import type { Metadata, Viewport } from "next";3import { Inter, JetBrains_Mono, Space_Grotesk } from "next/font/google";4import "./globals.css";5import "../ka/ka-tabbar.css";6import { LangProvider, LangToggle } from "@/components/LangContext";7import AccountButton from "@/components/AccountButton";8import CookieConsent from "@/components/CookieConsent";9import FooterNav from "@/components/FooterNav";10import MobileTabBar from "@/components/MobileTabBar";11import HeaderNav from "@/components/HeaderNav";12import GroupeKaBadge from "@/ka/GroupeKaBadge";13import KaFooter from "@/ka/KaFooter";14import Link from "next/link";15import { SITE_URL } from "@/lib/seo";1617const inter = Inter({ subsets: ["latin"], variable: "--font-inter" });18const spaceGrotesk = Space_Grotesk({19  subsets: ["latin"],20  variable: "--font-space-grotesk",21});22const jetbrains = JetBrains_Mono({23  subsets: ["latin"],24  variable: "--font-jetbrains",25});2627export const metadata: Metadata = {28  metadataBase: new URL(SITE_URL),29  title: {30    default: "Vrai-Prix — Un service Groupe KA",31    template: "%s | Vrai-Prix",32  },33  description:34    "Estimation immobilière transparente pour le Québec : modèle hédonique + comparables réels, fourchette honnête et indice de confiance. 3,7 millions de propriétés, 1 100 municipalités.",35  applicationName: "Vrai-Prix",36  icons: { icon: "/favicon.svg", apple: "/apple-touch-icon.png" },37  openGraph: {38    type: "website",39    siteName: "Vrai-Prix",40    locale: "fr_CA",41    url: SITE_URL,42    title: "Vrai-Prix — Un service Groupe KA",43    description:44      "Estimation immobilière transparente pour le Québec : modèle hédonique + comparables réels, fourchette honnête et indice de confiance.",45    images: [46      { url: "https://www.vrai-prix.com/og.png", width: 1200, height: 630 },47    ],48  },49  twitter: {50    card: "summary_large_image",51    images: [52      { url: "https://www.vrai-prix.com/og.png", width: 1200, height: 630 },53    ],54    title: "Vrai-Prix — Un service Groupe KA",55    description:56      "Estimation immobilière transparente pour le Québec : 3,7 millions de propriétés estimées, calcul montré en entier.",57  },58  formatDetection: { telephone: false },59};6061/** Viewport mobile : viewport-fit=cover pour les encoches iOS (safe-area). */62export const viewport: Viewport = {63  width: "device-width",64  initialScale: 1,65  viewportFit: "cover",66};6768/** JSON-LD global : l'organisation et le site (entités schema.org). */69const ORG_JSONLD = {70  "@context": "https://schema.org",71  "@graph": [72    {73      "@type": "Organization",74      "@id": `${SITE_URL}/#org`,75      name: "Vrai-Prix",76      url: SITE_URL,77      email: "contact@spboucher.ai",78      founder: { "@type": "Person", name: "Simon-Pierre Boucher" },79      areaServed: { "@type": "AdministrativeArea", name: "Québec, Canada" },80    },81    {82      "@type": "WebSite",83      "@id": `${SITE_URL}/#site`,84      name: "Vrai-Prix",85      url: SITE_URL,86      inLanguage: "fr-CA",87      publisher: { "@id": `${SITE_URL}/#org` },88      description:89        "Estimation immobilière transparente pour le Québec : modèle hédonique + comparables réels, fourchette honnête et indice de confiance.",90    },91  ],92};9394const TICKER = [95  "3 747 008 unités d'évaluation",96  "745 119 ventes réelles 2021-2026",97  "22 M d'estimations calculées",98  "Fourchette honnête P10-P90",99  "Indice de confiance A-D",100  "Zéro boîte noire — le calcul est montré",101  "1 100 municipalités couvertes",102  "Erreur médiane 11 %",103];104105export default function RootLayout({ children }: LayoutProps<"/">) {106  return (107    <html lang="fr-CA">108      <body109        className={`${inter.variable} ${spaceGrotesk.variable} ${jetbrains.variable}`}110      >111        <script112          type="application/ld+json"113          dangerouslySetInnerHTML={{ __html: JSON.stringify(ORG_JSONLD) }}114        />115        <LangProvider>116          {/* header opaque compact (standard header/menu KA 2026-08-22) */}117          <header className="sticky top-0 z-[var(--z-header,500)] border-b border-[var(--line-strong)] bg-paper">118            <div className="relative mx-auto flex h-14 max-w-6xl items-center gap-6 px-4 sm:px-6">119              <Link120                href="/"121                className="vp-display relative flex items-baseline gap-1.5 text-[19px] font-bold leading-none tracking-[-0.04em] after:absolute after:-inset-2 after:content-['']"122              >123                Vrai&nbsp;Prix124                <span125                  aria-hidden="true"126                  className="inline-block h-[7px] w-[7px] bg-accent"127                />128              </Link>129              {/* badge Groupe KA — desktop seulement (l'espace manque sous xl ;130                  le menu mobile porte sa propre entrée) */}131              <span className="hidden xl:inline-flex">132                <GroupeKaBadge />133              </span>134              <div className="ml-auto flex items-center gap-3 sm:gap-4">135                <HeaderNav />136                <span137                  aria-hidden="true"138                  className="hidden h-4 w-px bg-[var(--line)] lg:inline-block"139                />140                <AccountButton />141                <LangToggle />142              </div>143            </div>144          </header>145          <div className="ticker" aria-hidden="true">146            <div className="ticker-track">147              {[...TICKER, ...TICKER].map((s, i) => (148                <span key={i}>{s}</span>149              ))}150            </div>151          </div>152          <main className="mx-auto max-w-6xl px-4 pb-16 sm:px-6">{children}</main>153          {/* rangée locale (papier) : marque + liens de navigation du site,154              puis le bloc encre final = KaFooter (commun Groupe KA) */}155          <div className="mx-auto max-w-6xl px-4 sm:px-6">156            <div className="border-t-2 border-ink pt-7 text-[13px] text-ink-2">157              <p className="vp-display mb-3 flex items-baseline gap-2 text-[24px] font-bold tracking-[-0.04em] text-ink">158                Vrai&nbsp;Prix159                <span160                  aria-hidden="true"161                  className="inline-block h-[8px] w-[8px] bg-accent"162                />163              </p>164              <p className="max-w-2xl">165                Estimations bâties sur les rôles d&apos;évaluation foncière du166                Québec (MAMH, données ouvertes) et 745 119 transactions réelles.167                Modèle hédonique + comparables ajustés, calcul montré en entier.168                Estimation statistique à titre indicatif.169              </p>170              <FooterNav />171            </div>172          </div>173          <KaFooter174            siteId="vrai-prix"175            localLegal={[176              { label: "Conditions", href: "/conditions" },177              { label: "Confidentialité", href: "/confidentialite" },178              { label: "Méthodologie", href: "/methodologie" },179            ]}180          />181          <MobileTabBar />182          <CookieConsent />183          <script184            dangerouslySetInnerHTML={{185              __html: 'window.KA_AGENT={site:"vrai-prix"}',186            }}187          />188          <script src="/ka-agent.js" defer />189        </LangProvider>190      </body>191    </html>192  );193}194
Files · 0f7d67ef58d6fba69b3d85de2ad16752ca71798c
Menu

Theme