SPB Git forge

spb/groupe-ka

Public

Groupe KA — site du holding + KA ID (compte unique & SSO des 7 plateformes). Next.js 16, SQLite, Google & Apple login.

81commits 1branches 0releases
89.2 MBsize
maindefault branch
22 days agolast push
TypeScript 70.4% HTML 18.4% JavaScript 4% Python 3.8% CSS 3.4%

feat: Trouve·Ka, le produit phare — moteur de recherche du web québécois

Section #trouve-ka en tête de page (carte moteur avec barre de
recherche factice + carte encre « Les grands moteurs cherchent le
monde. Trouve·Ka cherche le Québec. »), héros mis à jour (7 agrégateurs
+ 1 moteur), rangée socle, nav « Moteur » (breakpoint passé à xl +
libellés raccourcis, débordait à lg avec 8 items), ticker, lien footer,
métadonnées; ajouté aux pages /avis, /loi-25 (rangée tableau) et
/retrait.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed 1 mo ago (Aug 13, 2026) parent 43a8d86

5 changed files +155 −14

modified src/app/avis/page.tsx +3 −3
@@ -29,9 +29,9 @@ export default function Avis() {
29 29 </h1>
30 30 <p className="rise mt-5 max-w-2xl text-[15px] text-ink-2 [animation-delay:0.16s]">
31 31 <strong className="text-ink">
32 − Groupe KA et ses plateformes (Lou·Ka, Immo·Ka, Vrai-Prix,
33 − ValoPlex, Auto·Ka, Fabri·Ka, Food·Ka, ka6) sont des services
34 − d&apos;agrégation et de recherche.
32 + Groupe KA et ses plateformes (Trouve·Ka, Lou·Ka, Immo·Ka,
33 + Vrai-Prix, ValoPlex, Auto·Ka, Fabri·Ka, Food·Ka, ka6) sont des
34 + services d&apos;agrégation et de recherche.
35 35 </strong>{" "}
36 36 Nous indexons des annonces, des prix et des informations{" "}
37 37 <strong className="text-ink">
modified src/app/layout.tsx +9 −6
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18 18 metadataBase: new URL("https://www.groupe-ka.com"),
19 19 title: "Groupe KA — holding d’agrégateurs automatisés, sans boîte noire",
20 20 description:
21 − "Groupe KA est un holding québécois d’agrégateurs de produits et services entièrement automatisés : Lou·Ka (location), Immo·Ka (propriétés à vendre), Vrai-Prix (valeur résidentielle), ValoPlex (plex), Auto·Ka (voitures usagées), Fabri·Ka (produits québécois) et Food·Ka (épicerie). Sept plateformes, zéro saisie manuelle.",
21 + "Groupe KA est un holding québécois d’agrégateurs de produits et services entièrement automatisés : Trouve·Ka (moteur de recherche du web québécois), Lou·Ka (location), Immo·Ka (propriétés à vendre), Vrai-Prix (valeur résidentielle), ValoPlex (plex), Auto·Ka (voitures usagées), Fabri·Ka (produits québécois) et Food·Ka (épicerie). Zéro saisie manuelle.",
22 22 openGraph: {
23 23 title: "Groupe KA — holding d’agrégateurs automatisés, sans boîte noire",
24 24 description:
@@ -31,17 +31,19 @@ export const metadata: Metadata = {
31 31 };
32 32
33 33 const NAV_ITEMS = [
34 + { href: "/#trouve-ka", label: "Moteur" },
34 35 { href: "/#flux", label: "L’agrégation" },
35 36 { href: "/#chiffres", label: "Chiffres" },
36 37 { href: "/#produits", label: "Plateformes" },
37 − { href: "/#socle", label: "Le socle" },
38 − { href: "/#bots", label: "Les bots" },
38 + { href: "/#socle", label: "Socle" },
39 + { href: "/#bots", label: "Bots" },
39 40 { href: "/#mission", label: "Mission" },
40 41 { href: "/#contact", label: "Contact" },
41 42 ];
42 43
43 44 const TICKER_ITEMS = [
44 45 "·Ka = agréger — mille sites, un seul endroit",
46 + "Trouve·Ka cherche le Québec — le moteur de recherche du web d'ici",
45 47 "Sept agrégateurs · une obsession : la transparence",
46 48 "450+ connecteurs lisent les sources jour et nuit",
47 49 "7 000+ logements à louer agrégés en continu",
@@ -89,13 +91,13 @@ export default function RootLayout({
89 91 <a href="#" className="group" aria-label="Groupe KA — accueil">
90 92 <Wordmark />
91 93 </a>
92 − <nav aria-label="Navigation principale" className="hidden lg:block">
94 + <nav aria-label="Navigation principale" className="hidden xl:block">
93 95 <ul className="flex items-center gap-1">
94 96 {NAV_ITEMS.map((item) => (
95 97 <li key={item.href}>
96 98 <a
97 99 href={item.href}
98 − className="gk-display inline-block rounded-full border-[1.5px] border-transparent px-4 py-[7px] text-[13.5px] font-bold text-ink-2 transition-colors hover:border-ink hover:text-ink"
100 + className="gk-display inline-block rounded-full border-[1.5px] border-transparent px-3 py-[7px] text-[13.5px] font-bold whitespace-nowrap text-ink-2 transition-colors hover:border-ink hover:text-ink"
99 101 >
100 102 {item.label}
101 103 </a>
@@ -115,7 +117,7 @@ export default function RootLayout({
115 117 </ul>
116 118 </nav>
117 119 {/* Mobile : icône compte directement dans le header + menu 100 % CSS */}
118 − <div className="flex items-center gap-2 lg:hidden">
120 + <div className="flex items-center gap-2 xl:hidden">
119 121 <UserButton variant="icon" />
120 122 <input
121 123 type="checkbox"
@@ -215,6 +217,7 @@ export default function RootLayout({
215 217 </p>
216 218 <ul className="gk-mono mt-7 flex flex-wrap gap-x-7 gap-y-3 text-[11px] font-bold tracking-[0.1em] uppercase">
217 219 {[
220 + ["Trouve·Ka", "https://www.trouve-ka.com"],
218 221 ["Lou·Ka", "https://www.lou-ka.com"],
219 222 ["Immo·Ka", "https://www.immo-ka.com"],
220 223 ["Vrai-Prix", "https://www.vrai-prix.com"],
modified src/app/loi-25/page.tsx +7 −0
@@ -11,6 +11,13 @@ const MAILTO =
11 11 "gk-mono font-bold underline underline-offset-4 hover:text-ink";
12 12
13 13 const APPS_ROWS: [string, string, string, string, string][] = [
14 + [
15 + "Trouve·Ka",
16 + "www.trouve-ka.com",
17 + "Moteur de recherche — web québécois",
18 + "Pages web publiquement accessibles du web québécois, indexées par un robot dédié",
19 + "Renseignements rendus publics par les sites indexés; extraits et liens vers la page originale seulement",
20 + ],
14 21 [
15 22 "Lou·Ka",
16 23 "www.lou-ka.com",
modified src/app/page.tsx +133 −3
@@ -227,6 +227,12 @@ const MANIFESTO = [
227 227 ];
228 228
229 229 const SOCLE_ROWS: [string, string, string, string][] = [
230 + [
231 + "Trouve·Ka",
232 + "Recherche — tout le web québécois",
233 + "Crawler dédié + index de recherche plein texte",
234 + "www.trouve-ka.com",
235 + ],
230 236 [
231 237 "Lou·Ka",
232 238 "Location résidentielle",
@@ -408,14 +414,15 @@ export default function Home() {
408 414 automatisés : des centaines de connecteurs lisent les sites à la
409 415 source, normalisent la donnée et se resynchronisent seuls, jour et
410 416 nuit. Se loger, acheter, évaluer, rouler, consommer local, faire
411 − l&apos;épicerie — sept plateformes, zéro saisie manuelle, zéro
412 − boîte noire.
417 + l&apos;épicerie, chercher — sept agrégateurs et un moteur de
418 + recherche, zéro saisie manuelle, zéro boîte noire.
413 419 </p>
414 420 <div className="rise mt-7 flex gap-3 overflow-x-auto pb-2 [animation-delay:0.24s]">
415 421 <span className="stat-chip">
416 422 <span className="pulse-dot" aria-hidden="true" />7 agrégateurs en
417 423 ligne
418 424 </span>
425 + <span className="stat-chip">1 moteur de recherche québécois</span>
419 426 <span className="stat-chip">450+ connecteurs sources</span>
420 427 <span className="stat-chip">22 M+ d&apos;observations immobilières</span>
421 428 <span className="stat-chip">375 000+ annonces &amp; produits agrégés</span>
@@ -433,6 +440,129 @@ export default function Home() {
433 440 <KaDefinition />
434 441 </section>
435 442
443 + {/* ---------- Trouve·Ka — le produit phare ---------- */}
444 + <Section
445 + id="trouve-ka"
446 + kicker="Le produit phare · moteur de recherche"
447 + title={
448 + <>
449 + Trouve·Ka. <span className="hl">Cherche le Québec.</span>
450 + </>
451 + }
452 + >
453 + <p className="mt-3 max-w-xl text-[14.5px] text-ink-2">
454 + Les agrégateurs ·Ka couvrent chacun un marché. Trouve·Ka couvre tout
455 + le reste : c&apos;est le moteur de recherche du groupe, dont
456 + l&apos;index est bâti exclusivement sur le web québécois — son robot
457 + le parcourt jour et nuit et n&apos;indexe que lui.
458 + </p>
459 + <div className="mt-7 grid items-stretch gap-6 lg:grid-cols-[minmax(0,1.15fr)_minmax(0,1fr)]">
460 + <article className="gk-card gk-card-hover p-5 sm:p-7">
461 + <div className="flex flex-wrap items-baseline justify-between gap-3">
462 + <span className="gk-mono text-[12px] font-bold text-green">
463 + MOTEUR
464 + </span>
465 + <span className="klabel">www.trouve-ka.com</span>
466 + </div>
467 + <h3 className="gk-display mt-4 inline-flex items-baseline gap-[5px] text-[32px] font-bold tracking-[-0.04em] sm:text-[38px]">
468 + Trouve
469 + <span
470 + className="inline-block -rotate-2 rounded-md px-[8px] pb-[3px]"
471 + style={{ background: "#141814", color: "#b9cfee" }}
472 + >
473 + Ka
474 + </span>
475 + </h3>
476 + <p className="gk-display mt-3 text-[17px] font-bold uppercase tracking-[-0.01em]">
477 + Tout le web québécois, dans une seule barre de recherche.
478 + </p>
479 + {/* Barre de recherche factice — l'objet lui-même */}
480 + <div
481 + aria-hidden="true"
482 + className="mt-5 flex items-center gap-3 rounded-full border-2 border-ink bg-white px-5 py-3 shadow-[4px_4px_0_rgba(20,24,20,0.85)]"
483 + >
484 + <span className="gk-mono text-[15px] font-bold">⌕</span>
485 + <span className="gk-mono flex-1 truncate text-[12.5px] text-ink-3">
486 + poutine · plex à vendre · microbrasserie · Gaspésie…
487 + </span>
488 + <span
489 + className="gk-display rounded-full bg-ink px-4 py-[5px] text-[12.5px] font-bold"
490 + style={{ color: "#b9cfee" }}
491 + >
492 + Chercher
493 + </span>
494 + </div>
495 + <div className="mt-5 flex flex-wrap gap-2">
496 + <span className="stat-chip !text-[11px]">
497 + Des milliers de domaines d&apos;ici
498 + </span>
499 + <span className="stat-chip !text-[11px]">
500 + Index en croissance heure par heure
501 + </span>
502 + <span className="stat-chip !text-[11px]">100 % Québec</span>
503 + </div>
504 + <ul className="mt-5 space-y-2 border-t-[1.5px] border-dashed border-[rgba(20,24,20,0.25)] pt-5">
505 + {[
506 + "Résultats 100 % québécois — l'index ne contient que le web d'ici",
507 + "État du moteur public : pages, domaines et file de crawl à découvert",
508 + "Soumettez votre site — l'indexation sur demande, ouverte à tous",
509 + "Robot dédié, documenté, qui respecte robots.txt",
510 + ].map((f) => (
511 + <li key={f} className="flex gap-3 text-[13.5px] text-ink-2">
512 + <span
513 + aria-hidden="true"
514 + className="mt-[7px] h-[5px] w-[5px] flex-none rotate-45 border border-ink bg-lime"
515 + />
516 + {f}
517 + </li>
518 + ))}
519 + </ul>
520 + <a
521 + href="https://www.trouve-ka.com"
522 + target="_blank"
523 + rel="noopener noreferrer"
524 + className="btn btn-primary mt-6 w-full sm:w-auto"
525 + >
526 + Chercher sur www.trouve-ka.com ↗
527 + </a>
528 + </article>
529 + <div className="gk-card !bg-ink p-6 text-paper sm:p-7">
530 + <p className="kicker !text-lime">
531 + Pourquoi un moteur de recherche ?
532 + </p>
533 + <p className="gk-display mt-4 text-[clamp(24px,3.2vw,34px)] leading-[1.05] font-bold tracking-[-0.03em] uppercase">
534 + Les grands moteurs
535 + <br />
536 + cherchent le monde.
537 + <br />
538 + <span className="text-lime">Trouve·Ka cherche le Québec.</span>
539 + </p>
540 + <p className="mt-4 max-w-md text-[13.5px] text-[rgba(245,243,238,0.75)]">
541 + Un commerce de Rimouski, une érablière de Lanaudière, un blogue
542 + de Limoilou : noyés dans un index mondial, introuvables. Dans un
543 + index qui ne contient que le Québec, ils sont en première page.
544 + C&apos;est l&apos;agrégation poussée à sa conclusion logique —
545 + indexer la province entière.
546 + </p>
547 + <ul className="mt-5 space-y-2 border-t border-[rgba(245,243,238,0.15)] pt-5 text-[13px] text-[rgba(245,243,238,0.75)]">
548 + {[
549 + "Crawler maison + index de recherche dédié",
550 + "Nourri par les éclaireurs ka2, ka4 et ka6",
551 + "Zéro publicité, zéro profilage — comme tout le groupe",
552 + ].map((f) => (
553 + <li key={f} className="flex gap-3">
554 + <span
555 + aria-hidden="true"
556 + className="mt-[6px] h-[5px] w-[5px] flex-none rotate-45 bg-lime"
557 + />
558 + {f}
559 + </li>
560 + ))}
561 + </ul>
562 + </div>
563 + </div>
564 + </Section>
565 +
436 566 {/* ---------- La figure d'agrégation ---------- */}
437 567 <Section
438 568 id="flux"
@@ -523,7 +653,7 @@ export default function Home() {
523 653 title="Le socle commun"
524 654 >
525 655 <p className="mt-3 max-w-xl text-[14.5px] text-ink-2">
526 − Les sept plateformes partagent la même colonne vertébrale : données
656 + Les huit plateformes partagent la même colonne vertébrale : données
527 657 publiques et annonces lues directement à la source, connecteurs
528 658 dédiés synchronisés en continu, moteurs statistiques validés, et une
529 659 identité visuelle unique — bordures encre, lime électrique, calcul à
modified src/app/retrait/page.tsx +3 −2
@@ -108,8 +108,9 @@ export default function Retrait() {
108 108 </h1>
109 109 <p className="rise mt-5 max-w-2xl text-[15px] text-ink-2 [animation-delay:0.16s]">
110 110 La présente politique explique comment demander le retrait
111 − d&apos;une annonce indexée sur nos plateformes (Lou·Ka, Immo·Ka,
112 − Auto·Ka, Fabri·Ka, Food·Ka, ka6), ainsi que la révision d&apos;une
111 + d&apos;une annonce ou d&apos;une page indexée sur nos plateformes
112 + (Trouve·Ka, Lou·Ka, Immo·Ka, Auto·Ka, Fabri·Ka, Food·Ka, ka6), ainsi
113 + que la révision d&apos;une
113 114 estimation ou l&apos;arrêt de la couverture d&apos;une propriété sur
114 115 Vrai-Prix et ValoPlex.
115 116 </p>
116 117