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 · 60 lines tsx
Raw Blame History
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&apos;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