SPB Git

spb/trouve-ka Public

Trouve-KA — moteur de recherche web indépendant, Québec-first. Crawler distribué, index OpenSearch, ranking bilingue, galerie d'images. En prod : www.trouve-ka.com

Python 76.8% TypeScript 15.7% SQL 3.9% Shell 1.4% CSS 1.3% Dockerfile 0.7%
1.7 KB · 62 lines tsx
Raw Blame History
1/**2 * Trouve-KA — flux temps réel du bot (footer)3 * Author: Simon-Pierre Boucher4 * Contact: contact@spboucher.ai5 */67"use client";89import { useEffect, useState } from "react";1011type LiveEvent = {12  at: string;13  url: string;14  domain: string;15  outcome: string;16};1718/**19 * Affiche en temps réel le site que TrouveKABot est en train de scraper.20 * Poll /api/live toutes les 4 s; se cache silencieusement si l'API est injoignable.21 */22export function LiveCrawl() {23  const [event, setEvent] = useState<LiveEvent | null>(null);2425  useEffect(() => {26    let active = true;27    const tick = async () => {28      try {29        const res = await fetch("/api/live", { cache: "no-store" });30        if (!res.ok) return;31        const data = (await res.json()) as { event: LiveEvent | null };32        if (active && data.event) setEvent(data.event);33      } catch {34        // API injoignable : on garde le dernier événement affiché35      }36    };37    tick();38    const id = setInterval(tick, 4000);39    return () => {40      active = false;41      clearInterval(id);42    };43  }, []);4445  if (!event) return null;4647  const shortUrl = event.url.replace(/^https?:\/\/(www\.)?/, "").slice(0, 80);4849  return (50    <p className="gk-mono mt-2 flex flex-wrap items-center gap-x-2 gap-y-1 text-[11px] tracking-[0.04em] text-[rgba(245,243,238,0.6)]">51      <span className="pulse-dot" aria-hidden="true" />52      <span className="font-bold uppercase tracking-[0.12em] text-lime">53        En ce moment54      </span>55      <span>KA bot scrappe le site suivant :</span>56      <span className="break-all font-bold text-[rgba(245,243,238,0.85)]" title={event.url}>57        {shortUrl}58      </span>59    </p>60  );61}62