SPB Git

spb/search-box Public

Agentic web research engine — hypotheses, verbatim evidence, contradictions, sourced answers streamed live. Claude Opus 5 + Firecrawl + PostgreSQL.

TypeScript 76.9% CSS 18.7% SQL 2.1% JavaScript 1.8% Shell 0.5%
1.7 KB · 53 lines tsx
Raw Blame History
1/**2 * Search-box.ai3 * Author: Simon-Pierre Boucher4 * Contact: contact@spboucher.ai5 * File: apps/web/app/layout.tsx6 * Description: Root layout — fonts, shell chrome, header/footer.7 */89import type { Metadata, Viewport } from "next";10import { Fraunces, Instrument_Sans, Spline_Sans_Mono } from "next/font/google";11import Link from "next/link";12import { Logo } from "@/components/Logo";13import "./globals.css";1415const fraunces = Fraunces({ subsets: ["latin"], variable: "--font-fraunces" });16const instrument = Instrument_Sans({ subsets: ["latin"], variable: "--font-instrument" });17const mono = Spline_Sans_Mono({ subsets: ["latin"], variable: "--font-mono-face" });1819export const metadata: Metadata = {20  title: "Search-box.ai — search the answer space",21  description:22    "Autonomous multi-step web research: hypotheses, evidence, contradictions and sourced answers, live."23};2425export const viewport: Viewport = {26  width: "device-width",27  initialScale: 1,28  themeColor: "#faf9f5"29};3031export default function RootLayout({ children }: { children: React.ReactNode }) {32  return (33    <html lang="en" className={`${fraunces.variable} ${instrument.variable} ${mono.variable}`}>34      <body>35        <div className="shell">36          <header className="topbar">37            <Link href="/" className="wordmark">38              <Logo size={26} />39              search-box<em>.ai</em>40            </Link>41            <span className="tagline">evidence-first autonomous research</span>42          </header>43          {children}44          <footer className="footer">45            <span>search-box.ai — every claim traces to a source</span>46            <span>© 2026 Simon-Pierre Boucher</span>47          </footer>48        </div>49      </body>50    </html>51  );52}53