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/**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