spb/worthdoing Public
Autonomous investigation agent that discovers, challenges, and ranks things genuinely worth doing — Claude + Firecrawl, Next.js 16, PostgreSQL
TypeScript 91.5%
SQL 5.8%
CSS 2.2%
1/**2 * WorthDoing.ai3 * Author: Simon-Pierre Boucher4 * Contact: contact@spboucher.ai5 * File: src/app/layout.tsx6 * Description: Root layout — fonts (Fraunces display, Instrument Sans body, IBM Plex Mono telemetry), site chrome.7 */8import type { Metadata } from "next";9import { Fraunces, Instrument_Sans, IBM_Plex_Mono } from "next/font/google";10import Link from "next/link";11import "./globals.css";1213const display = Fraunces({14 variable: "--font-display",15 subsets: ["latin"],16 axes: ["opsz", "SOFT", "WONK"],17});1819const body = Instrument_Sans({20 variable: "--font-body",21 subsets: ["latin"],22});2324const tele = IBM_Plex_Mono({25 variable: "--font-tele",26 subsets: ["latin"],27 weight: ["400", "500"],28});2930export const metadata: Metadata = {31 title: "WorthDoing.ai — find what should exist",32 description:33 "An autonomous investigation agent that discovers, challenges, and ranks things genuinely worth doing. Google finds what exists. WorthDoing finds what should.",34 metadataBase: new URL(process.env.PUBLIC_BASE_URL ?? "https://www.worthdoing.ai"),35};3637export default function RootLayout({ children }: LayoutProps<"/">) {38 return (39 <html lang="en" className={`${display.variable} ${body.variable} ${tele.variable} h-full antialiased`}>40 <body className="min-h-full flex flex-col">41 <header className="sticky top-0 z-40 border-b border-line bg-paper/85 backdrop-blur-sm">42 <div className="mx-auto flex h-14 w-full max-w-6xl items-center justify-between px-4 sm:px-6">43 <Link href="/" className="flex items-center gap-2.5">44 {/* eslint-disable-next-line @next/next/no-img-element */}45 <img src="/logo.svg" alt="" className="h-7 w-7 rounded-md" />46 <span className="flex items-baseline gap-1.5">47 <span className="font-heading text-lg font-semibold tracking-tight text-ink sm:text-xl">48 Worth<span className="text-verdict italic">Doing</span>49 </span>50 <span className="hidden font-mono text-[10px] uppercase tracking-widest text-ink-soft sm:inline">51 .ai52 </span>53 </span>54 </Link>55 <nav className="flex items-center gap-0.5 sm:gap-2">56 <Link57 href="/explore"58 className="rounded-md px-2 py-2 text-[13px] text-ink-soft transition-colors hover:bg-secondary hover:text-ink sm:px-3 sm:text-sm"59 >60 Explore61 </Link>62 <Link63 href="/history"64 className="rounded-md px-2 py-2 text-[13px] text-ink-soft transition-colors hover:bg-secondary hover:text-ink sm:px-3 sm:text-sm"65 >66 History67 </Link>68 <Link69 href="/"70 className="ml-0.5 rounded-md bg-ink px-2.5 py-2 text-[13px] font-medium text-paper transition-opacity hover:opacity-85 sm:ml-1 sm:px-3.5 sm:text-sm"71 >72 Investigate73 </Link>74 </nav>75 </div>76 </header>77 <main className="flex-1">{children}</main>78 <footer className="border-t border-line py-6">79 <div className="mx-auto flex w-full max-w-6xl flex-col items-start justify-between gap-2 px-4 font-mono text-[11px] text-ink-soft sm:flex-row sm:items-center sm:px-6">80 <span>WorthDoing.ai — an autonomous opportunity analyst</span>81 <span>Google finds what exists. WorthDoing finds what should.</span>82 </div>83 </footer>84 </body>85 </html>86 );87}88