profileShare

rasmusjy / roundtable

Read-only snapshot

No repository description.

main default branch 181 files Expires Sep 13, 2026, 9:06 AM

Commit

Trim landing page to the hero

commit 68cccce

1 changed file with +0 and −199

modified src/app/page.tsx +0 −199
@@ -1,51 +1,10 @@
1 -import {
2 - ArrowRight,
3 - CheckCircle2,
4 - GitCompareArrows,
5 - MessageCircleQuestion,
6 - MessagesSquare,
7 - Scale,
8 - Sparkles,
9 -} from 'lucide-react';
10 -import Link from 'next/link';
11 1 import { LandingBackground } from '@/components/landing-background';
12 2 import { LandingHero } from '@/components/landing-hero';
13 -import { Reveal } from '@/components/reveal';
14 -import { Button } from '@/components/ui/button';
15 3 import type { DebateResult } from '@/core/types';
16 4 import { listDemoDebates, loadDebateResult } from '@/db/repositories';
17 -import { QUESTION_EXAMPLES } from '@/lib/question-examples';
18 5
19 6 export const dynamic = 'force-dynamic';
20 7
21 -const STEPS = [
22 - {
23 - icon: MessageCircleQuestion,
24 - title: 'Ask one clear question',
25 - description:
26 - 'Add your options, priorities, and limits. Roundtable chooses a balanced set of models for you.',
27 - },
28 - {
29 - icon: MessagesSquare,
30 - title: 'Hear independent views',
31 - description:
32 - 'Each model answers on its own before seeing the others, so the first opinion cannot sway the room.',
33 - },
34 - {
35 - icon: Scale,
36 - title: 'Get a checked verdict',
37 - description:
38 - 'They challenge weak points, revise their answers, and combine the strongest reasoning into one result.',
39 - },
40 -];
41 -
42 -const REASONS = [
43 - 'One clear recommendation comes first',
44 - 'Remaining disagreements stay visible',
45 - 'Every original opinion can be inspected',
46 - 'Cost is estimated before anything runs',
47 -];
48 -
49 8 export default async function HomePage() {
50 9 let demo: DebateResult | null = null;
51 10 try {
@@ -59,164 +18,6 @@export default async function HomePage() {
59 18 <div className="overflow-hidden">
60 19 <LandingBackground />
61 20 <LandingHero result={demo} />
62 -
63 - <section className="container py-16 sm:py-24">
64 - <Reveal className="grid gap-8 lg:grid-cols-[0.7fr_1.3fr] lg:gap-16">
65 - <div>
66 - <p className="text-xs font-bold uppercase tracking-[0.18em] text-primary">
67 - Made for real decisions
68 - </p>
69 - <h2 className="mt-3 max-w-md font-display text-3xl font-semibold tracking-[-0.035em] sm:text-4xl">
70 - Bring the messy question.
71 - </h2>
72 - <p className="mt-4 max-w-md leading-relaxed text-muted-foreground">
73 - Roundtable is most useful when there is no obvious answer, several tradeoffs matter,
74 - and you want a recommendation you can inspect.
75 - </p>
76 - </div>
77 - <div className="grid gap-3 sm:grid-cols-2">
78 - {QUESTION_EXAMPLES.map((example) => (
79 - <Link
80 - key={example.category}
81 - href={{ pathname: '/debate', query: { q: example.question } }}
82 - className="group rounded-2xl border bg-card/70 p-5 transition-all hover:-translate-y-0.5 hover:border-primary/35 hover:bg-card hover:shadow-lg hover:shadow-primary/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
83 - >
84 - <div className="flex items-center justify-between">
85 - <span className="text-[11px] font-bold uppercase tracking-[0.15em] text-muted-foreground">
86 - {example.category}
87 - </span>
88 - <ArrowRight className="h-4 w-4 text-muted-foreground transition-transform group-hover:translate-x-0.5 group-hover:text-primary" />
89 - </div>
90 - <h3 className="mt-6 font-display text-xl font-semibold tracking-tight">
91 - {example.short}
92 - </h3>
93 - <p className="mt-2 text-sm leading-relaxed text-muted-foreground">
94 - {example.question}
95 - </p>
96 - </Link>
97 - ))}
98 - </div>
99 - </Reveal>
100 - </section>
101 -
102 - <section className="border-y bg-card/45">
103 - <div className="container py-16 sm:py-24">
104 - <Reveal className="mx-auto max-w-2xl text-center">
105 - <p className="text-xs font-bold uppercase tracking-[0.18em] text-primary">
106 - How it works
107 - </p>
108 - <h2 className="mt-3 font-display text-3xl font-semibold tracking-[-0.035em] sm:text-4xl">
109 - More than three chat tabs.
110 - </h2>
111 - <p className="mt-4 text-muted-foreground">
112 - Roundtable keeps the opinions independent, then makes the models test one another
113 - before you see the final answer.
114 - </p>
115 - </Reveal>
116 -
117 - <ol className="mx-auto mt-12 grid max-w-6xl gap-4 md:grid-cols-3">
118 - {STEPS.map((step, index) => (
119 - <Reveal key={step.title} delay={index * 90}>
120 - <li className="relative h-full rounded-2xl border bg-background p-6">
121 - <div className="flex items-center justify-between">
122 - <span className="flex h-11 w-11 items-center justify-center rounded-xl bg-primary/10 text-primary">
123 - <step.icon className="h-5 w-5" />
124 - </span>
125 - <span className="font-mono text-xs text-muted-foreground/60">0{index + 1}</span>
126 - </div>
127 - <h3 className="mt-8 font-display text-xl font-semibold tracking-tight">
128 - {step.title}
129 - </h3>
130 - <p className="mt-3 text-sm leading-relaxed text-muted-foreground">
131 - {step.description}
132 - </p>
133 - </li>
134 - </Reveal>
135 - ))}
136 - </ol>
137 - </div>
138 - </section>
139 -
140 - <section className="container py-16 sm:py-24">
141 - <Reveal className="relative overflow-hidden rounded-[2rem] border bg-foreground px-6 py-10 text-background sm:px-10 sm:py-14 lg:px-14">
142 - <div className="absolute right-[-8%] top-[-40%] h-80 w-80 rounded-full bg-primary/40 blur-3xl" />
143 - <div className="relative grid items-center gap-10 lg:grid-cols-[1fr_0.85fr]">
144 - <div>
145 - <span className="inline-flex items-center gap-2 text-xs font-bold uppercase tracking-[0.18em] text-background/60">
146 - <Sparkles className="h-3.5 w-3.5" />
147 - Clear without hiding the details
148 - </span>
149 - <h2 className="mt-4 max-w-xl font-display text-3xl font-semibold tracking-[-0.035em] sm:text-5xl">
150 - A verdict you can question, share, and act on.
151 - </h2>
152 - <p className="mt-5 max-w-xl leading-relaxed text-background/70">
153 - Most AI gives you a confident answer and asks you to trust it. Roundtable keeps the
154 - reasoning, changes, and dissent attached to the result.
155 - </p>
156 - </div>
157 - <ul className="grid gap-3 sm:grid-cols-2 lg:grid-cols-1">
158 - {REASONS.map((reason) => (
159 - <li
160 - key={reason}
161 - className="flex items-center gap-3 rounded-xl border border-background/15 bg-background/5 p-3.5 text-sm"
162 - >
163 - <CheckCircle2 className="h-4 w-4 shrink-0 text-emerald-400" />
164 - {reason}
165 - </li>
166 - ))}
167 - </ul>
168 - </div>
169 - </Reveal>
170 - </section>
171 -
172 - <section className="container pb-20 pt-6 text-center sm:pb-28 sm:pt-10">
173 - <Reveal className="mx-auto max-w-3xl">
174 - <p className="text-xs font-bold uppercase tracking-[0.18em] text-primary">
175 - Your next decision
176 - </p>
177 - <h2 className="mt-4 font-display text-4xl font-semibold leading-tight tracking-[-0.04em] sm:text-6xl">
178 - Put it on the table.
179 - </h2>
180 - <p className="mx-auto mt-5 max-w-xl text-lg leading-relaxed text-muted-foreground">
181 - Start with smart defaults, or open the controls when you want to choose every model and
182 - rule yourself.
183 - </p>
184 - <div className="mt-8 flex flex-wrap items-center justify-center gap-3">
185 - <Button size="lg" asChild className="rounded-xl px-7">
186 - <Link href="/debate">
187 - Ask a question
188 - <ArrowRight className="h-4 w-4" />
189 - </Link>
190 - </Button>
191 - <Button size="lg" variant="ghost" asChild>
192 - <Link href="/demo">See example results</Link>
193 - </Button>
194 - </div>
195 - </Reveal>
196 - </section>
197 -
198 - <footer className="border-t">
199 - <div className="container flex flex-col items-center justify-between gap-5 py-9 text-sm text-muted-foreground sm:flex-row">
200 - <Link
201 - href="/"
202 - className="flex items-center gap-2 font-display font-semibold text-foreground"
203 - >
204 - <span className="flex h-7 w-7 items-center justify-center rounded-lg bg-primary text-primary-foreground">
205 - <GitCompareArrows className="h-4 w-4" />
206 - </span>
207 - Roundtable
208 - </Link>
209 - <nav className="flex items-center gap-6">
210 - <Link href="/debate" className="transition-colors hover:text-foreground">
211 - Ask
212 - </Link>
213 - <Link href="/demo" className="transition-colors hover:text-foreground">
214 - Examples
215 - </Link>
216 - </nav>
217 - <span className="text-xs">Several opinions. One clear verdict.</span>
218 - </div>
219 - </footer>
220 21 </div>
221 22 );
222 23 }