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/page.tsx6 * Description: Home page — hero with blooming mark, question composer, recent sessions.7 */89import Link from "next/link";10import { sessions } from "@search-box/db";11import { ensureMigrated } from "@/lib/runner";12import { NewResearchForm } from "@/components/NewResearchForm";13import { Logo } from "@/components/Logo";1415export const dynamic = "force-dynamic";1617export default async function HomePage() {18 await ensureMigrated();19 const recent = await sessions.list(12);2021 return (22 <main>23 <section className="hero">24 <div>25 <h1>26 Don't search the web.27 <br />28 Search the <em>answer space</em>.29 </h1>30 <p className="sub">31 An autonomous research engine that forms hypotheses, hunts evidence, surfaces32 contradictions — and writes a fully sourced answer in front of you, live.33 </p>34 <NewResearchForm />35 </div>36 <div className="hero-art" aria-hidden>37 <Logo size={260} />38 </div>39 </section>4041 {recent.length > 0 && (42 <section className="recent">43 <h2>Recent research</h2>44 <ul>45 {recent.map((s) => (46 <li key={s.id}>47 <Link href={`/r/${s.id}`}>48 <span className="q">{s.question}</span>49 <span className={`badge ${s.status}`}>{s.status}</span>50 <span className="arrow">→</span>51 </Link>52 </li>53 ))}54 </ul>55 </section>56 )}57 </main>58 );59}60