Abdalkaderdev commited on
Commit
f6f721b
·
1 Parent(s): 28a1631

Redirect home to voice interface

Browse files
Files changed (1) hide show
  1. frontend/app/page.tsx +11 -435
frontend/app/page.tsx CHANGED
@@ -1,442 +1,18 @@
1
- 'use client';
2
 
3
- import Link from 'next/link';
4
- import { Sparkles, ArrowRight, Eye, Brain, Zap, Shield, BookOpen, Heart, MessageSquare, ChevronRight } from 'lucide-react';
5
- import SpotlightCard from '@/components/SpotlightCard';
6
- import ShinyButton from '@/components/ShinyButton';
7
 
8
- const oraSteps = [
9
- {
10
- letter: 'O',
11
- title: 'Observe',
12
- icon: Eye,
13
- description: 'ORA helps you notice key themes, patterns, and insights in Scripture with deep contextual understanding.',
14
- color: 'purple',
15
- },
16
- {
17
- letter: 'R',
18
- title: 'Reflect',
19
- icon: Brain,
20
- description: 'Get personalized questions and prompts that deepen your understanding and connect Scripture to your life.',
21
- color: 'blue',
22
- },
23
- {
24
- letter: 'A',
25
- title: 'Act',
26
- icon: Zap,
27
- description: 'Receive practical wisdom for applying biblical truth to real-world situations and spiritual growth.',
28
- color: 'amber',
29
- },
30
- ];
31
 
32
- const features = [
33
- {
34
- icon: Shield,
35
- title: 'Gatekeeper Agent',
36
- description: 'Intelligent routing ensures your questions reach the right specialist in our AI swarm.',
37
- color: 'purple',
38
- },
39
- {
40
- icon: BookOpen,
41
- title: 'Theologian Agent',
42
- description: 'Deep Scripture analysis with cross-references, historical context, and doctrinal insights.',
43
- color: 'blue',
44
- },
45
- {
46
- icon: Heart,
47
- title: 'Healer Agent',
48
- description: 'Compassionate pastoral care with prayer guidance and emotional support.',
49
- color: 'rose',
50
- },
51
- {
52
- icon: Brain,
53
- title: 'Episodic Memory',
54
- description: 'ORA remembers your spiritual journey, building understanding over time.',
55
- color: 'violet',
56
- },
57
- ];
58
 
59
- const colorClasses: Record<string, { bg: string; border: string; text: string; glow: string }> = {
60
- purple: {
61
- bg: 'bg-purple-500/10',
62
- border: 'border-purple-500/30',
63
- text: 'text-purple-400',
64
- glow: 'shadow-[0_0_30px_rgba(168,85,247,0.3)]',
65
- },
66
- blue: {
67
- bg: 'bg-blue-500/10',
68
- border: 'border-blue-500/30',
69
- text: 'text-blue-400',
70
- glow: 'shadow-[0_0_30px_rgba(59,130,246,0.3)]',
71
- },
72
- amber: {
73
- bg: 'bg-amber-500/10',
74
- border: 'border-amber-500/30',
75
- text: 'text-amber-400',
76
- glow: 'shadow-[0_0_30px_rgba(245,158,11,0.3)]',
77
- },
78
- rose: {
79
- bg: 'bg-rose-500/10',
80
- border: 'border-rose-500/30',
81
- text: 'text-rose-400',
82
- glow: 'shadow-[0_0_30px_rgba(244,63,94,0.3)]',
83
- },
84
- violet: {
85
- bg: 'bg-violet-500/10',
86
- border: 'border-violet-500/30',
87
- text: 'text-violet-400',
88
- glow: 'shadow-[0_0_30px_rgba(139,92,246,0.3)]',
89
- },
90
- };
91
-
92
- export default function HomePage() {
93
  return (
94
- <>
95
- {/* Hero Section */}
96
- <section className="relative pt-32 pb-24 overflow-hidden">
97
- {/* Background Effects */}
98
- <div className="absolute inset-0 ora-grid-bg pointer-events-none z-0" />
99
- <div className="absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[800px] bg-purple-600/20 rounded-[100%] blur-[150px] pointer-events-none -z-10" />
100
- <div className="absolute top-1/4 right-0 w-[500px] h-[500px] bg-violet-500/10 rounded-full blur-[120px] pointer-events-none -z-10" />
101
- <div className="absolute top-1/3 left-0 w-[400px] h-[400px] bg-amber-500/5 rounded-full blur-[100px] pointer-events-none -z-10" />
102
-
103
- <div className="max-w-5xl mx-auto px-6 text-center">
104
- {/* Badge */}
105
- <div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full border border-purple-500/30 bg-purple-500/10 mb-8 backdrop-blur-sm animate-fade-slide-in">
106
- <span className="relative flex h-2 w-2">
107
- <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75" />
108
- <span className="relative inline-flex rounded-full h-2 w-2 bg-emerald-500" />
109
- </span>
110
- <span className="text-xs font-mono text-purple-300 uppercase tracking-[0.15em]">
111
- Sovereign AI Spiritual Companion
112
- </span>
113
- </div>
114
-
115
- {/* Main Heading */}
116
- <h1 className="text-5xl sm:text-6xl md:text-7xl font-bold tracking-tight leading-[1.1] mb-6 text-white animate-fade-slide-in stagger-1">
117
- Meet{' '}
118
- <span className="bg-gradient-to-r from-purple-400 via-violet-400 to-purple-400 bg-clip-text text-transparent">
119
- ORA
120
- </span>
121
- </h1>
122
-
123
- <p className="text-xl md:text-2xl text-neutral-300 max-w-3xl mx-auto mb-4 animate-fade-slide-in stagger-2">
124
- Your AI Spiritual Guide
125
- </p>
126
-
127
- <p className="text-lg text-neutral-500 max-w-2xl mx-auto mb-10 animate-fade-slide-in stagger-3">
128
- <span className="text-purple-400 font-semibold">O</span>bserve.{' '}
129
- <span className="text-purple-400 font-semibold">R</span>eflect.{' '}
130
- <span className="text-purple-400 font-semibold">A</span>ct. — A multi-agent AI system
131
- designed to deepen your faith through intelligent spiritual companionship.
132
- </p>
133
-
134
- {/* CTA Buttons */}
135
- <div className="flex flex-col sm:flex-row justify-center gap-4 animate-fade-slide-in stagger-4">
136
- <Link href="/dashboard">
137
- <ShinyButton>
138
- <span className="flex items-center gap-2">
139
- <Sparkles className="w-5 h-5" />
140
- Enter Dashboard
141
- <ArrowRight className="w-4 h-4" />
142
- </span>
143
- </ShinyButton>
144
- </Link>
145
- <Link
146
- href="/ora"
147
- className="px-8 py-3.5 text-sm font-medium text-neutral-300 border border-white/10 rounded-full hover:bg-white/5 hover:text-white transition-all flex items-center justify-center gap-2"
148
- >
149
- Learn More
150
- <ChevronRight className="w-4 h-4" />
151
- </Link>
152
- </div>
153
- </div>
154
- </section>
155
-
156
- {/* ORA Method Section */}
157
- <section className="py-24 border-t border-white/5">
158
- <div className="max-w-6xl mx-auto px-6">
159
- <div className="text-center mb-16">
160
- <h2 className="text-3xl md:text-4xl font-bold tracking-tight mb-4 text-white">
161
- The ORA Method
162
- </h2>
163
- <p className="text-neutral-400 max-w-2xl mx-auto">
164
- A three-step framework that transforms how you engage with Scripture and grow in your faith.
165
- </p>
166
- </div>
167
-
168
- <div className="grid grid-cols-1 md:grid-cols-3 gap-8">
169
- {oraSteps.map((step, i) => {
170
- const colors = colorClasses[step.color];
171
- return (
172
- <SpotlightCard
173
- key={step.letter}
174
- className={`p-8 rounded-2xl border ${colors.border} bg-white/[0.02] transition-all group animate-fade-slide-in text-center`}
175
- spotlightColor={`rgba(168, 85, 247, 0.15)`}
176
- style={{ animationDelay: `${i * 100}ms` }}
177
- >
178
- {/* Large Letter */}
179
- <div
180
- className={`w-20 h-20 mx-auto rounded-2xl ${colors.bg} flex items-center justify-center border ${colors.border} group-hover:scale-110 transition-transform ${colors.glow} mb-6`}
181
- >
182
- <span className={`text-4xl font-bold ${colors.text}`}>{step.letter}</span>
183
- </div>
184
-
185
- {/* Title */}
186
- <h3 className="text-2xl font-bold text-white mb-2">{step.title}</h3>
187
-
188
- {/* Step Badge */}
189
- <div className={`inline-flex items-center gap-1.5 px-3 py-1 rounded-full ${colors.bg} border ${colors.border} mb-4`}>
190
- <span className={`text-xs font-medium ${colors.text}`}>Step {i + 1}</span>
191
- </div>
192
-
193
- {/* Description */}
194
- <p className="text-neutral-400 leading-relaxed">{step.description}</p>
195
-
196
- {/* Icon at bottom */}
197
- <div className={`mt-6 flex justify-center`}>
198
- <step.icon className={`w-6 h-6 ${colors.text} opacity-50 group-hover:opacity-100 transition-opacity`} />
199
- </div>
200
- </SpotlightCard>
201
- );
202
- })}
203
- </div>
204
-
205
- {/* Connecting flow indicator */}
206
- <div className="hidden md:flex justify-center items-center gap-4 mt-8">
207
- <div className="flex items-center gap-2 text-neutral-500 text-sm">
208
- <span className="text-purple-400 font-semibold">Observe</span>
209
- <ArrowRight className="w-4 h-4" />
210
- <span className="text-blue-400 font-semibold">Reflect</span>
211
- <ArrowRight className="w-4 h-4" />
212
- <span className="text-amber-400 font-semibold">Act</span>
213
- </div>
214
- </div>
215
- </div>
216
- </section>
217
-
218
- {/* Agent Swarm Section */}
219
- <section className="py-24 border-t border-white/5 bg-[#030303] relative overflow-hidden">
220
- {/* Background decoration */}
221
- <div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] bg-purple-600/5 rounded-full blur-[150px] pointer-events-none" />
222
-
223
- <div className="max-w-6xl mx-auto px-6 relative">
224
- <div className="text-center mb-16">
225
- <div className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-purple-500/20 bg-purple-500/5 mb-6">
226
- <Brain className="w-3.5 h-3.5 text-purple-400" />
227
- <span className="text-[10px] uppercase tracking-widest font-medium text-purple-300">
228
- Multi-Agent Architecture
229
- </span>
230
- </div>
231
- <h2 className="text-3xl md:text-4xl font-bold tracking-tight mb-4 text-white">
232
- Powered by Intelligent Agents
233
- </h2>
234
- <p className="text-neutral-400 max-w-2xl mx-auto">
235
- ORA uses a swarm of specialized AI agents that work together to provide
236
- comprehensive spiritual guidance.
237
- </p>
238
- </div>
239
-
240
- {/* Agent Cards - 2x2 grid on larger screens */}
241
- <div className="grid grid-cols-1 sm:grid-cols-2 gap-6 max-w-4xl mx-auto">
242
- {features.map((feature, i) => {
243
- const colors = colorClasses[feature.color];
244
- return (
245
- <SpotlightCard
246
- key={feature.title}
247
- className={`p-6 rounded-2xl border ${colors.border} bg-white/[0.02] hover:bg-white/[0.04] transition-all animate-fade-slide-in group`}
248
- spotlightColor="purple"
249
- style={{ animationDelay: `${i * 100}ms` }}
250
- >
251
- <div className="flex items-start gap-4">
252
- {/* Icon */}
253
- <div
254
- className={`w-14 h-14 rounded-xl ${colors.bg} flex items-center justify-center border ${colors.border} shrink-0 group-hover:scale-110 transition-transform ${colors.glow}`}
255
- >
256
- <feature.icon className={`w-7 h-7 ${colors.text}`} />
257
- </div>
258
-
259
- {/* Content */}
260
- <div className="flex-1">
261
- <h3 className="text-lg font-semibold text-white mb-1">{feature.title}</h3>
262
- <p className="text-sm text-neutral-400 leading-relaxed">{feature.description}</p>
263
- </div>
264
- </div>
265
-
266
- {/* Status indicator */}
267
- <div className="mt-4 pt-4 border-t border-white/5 flex items-center justify-between">
268
- <span className={`text-xs ${colors.text} font-medium`}>
269
- {feature.title.includes('Agent') ? 'Active Agent' : 'System Feature'}
270
- </span>
271
- <div className="flex items-center gap-1.5">
272
- <span className="relative flex h-2 w-2">
273
- <span className={`animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 ${colors.text.replace('text-', 'bg-')}`} />
274
- <span className={`relative inline-flex rounded-full h-2 w-2 ${colors.text.replace('text-', 'bg-')}`} />
275
- </span>
276
- <span className="text-xs text-neutral-500">Online</span>
277
- </div>
278
- </div>
279
- </SpotlightCard>
280
- );
281
- })}
282
- </div>
283
-
284
- {/* Central Hub Visualization */}
285
- <div className="mt-16 flex justify-center">
286
- <div className="relative w-64 h-64 flex items-center justify-center">
287
- {/* Connection lines */}
288
- <div className="absolute inset-0 flex items-center justify-center">
289
- <div className="absolute w-px h-full bg-gradient-to-b from-transparent via-white/10 to-transparent" />
290
- <div className="absolute w-full h-px bg-gradient-to-r from-transparent via-white/10 to-transparent" />
291
- </div>
292
-
293
- {/* Central ORA orb */}
294
- <div className="relative z-10 w-20 h-20 rounded-full bg-gradient-to-br from-purple-600 to-violet-700 flex items-center justify-center shadow-lg shadow-purple-500/30 animate-breathe">
295
- <Sparkles className="w-8 h-8 text-white" />
296
- </div>
297
-
298
- {/* Top - Gatekeeper */}
299
- <div className="absolute top-0 left-1/2 -translate-x-1/2 flex flex-col items-center gap-2">
300
- <span className="text-xs text-purple-400 font-medium">Gatekeeper</span>
301
- <div className="w-4 h-4 rounded-full bg-purple-500/20 border border-purple-500/50 flex items-center justify-center">
302
- <div className="w-2 h-2 rounded-full bg-purple-400 animate-pulse" />
303
- </div>
304
- </div>
305
-
306
- {/* Bottom - Healer */}
307
- <div className="absolute bottom-0 left-1/2 -translate-x-1/2 flex flex-col items-center gap-2">
308
- <div className="w-4 h-4 rounded-full bg-rose-500/20 border border-rose-500/50 flex items-center justify-center">
309
- <div className="w-2 h-2 rounded-full bg-rose-400 animate-pulse" style={{ animationDelay: '0.5s' }} />
310
- </div>
311
- <span className="text-xs text-rose-400 font-medium">Healer</span>
312
- </div>
313
-
314
- {/* Left - Theologian */}
315
- <div className="absolute left-0 top-1/2 -translate-y-1/2 flex items-center gap-2">
316
- <span className="text-xs text-blue-400 font-medium">Theologian</span>
317
- <div className="w-4 h-4 rounded-full bg-blue-500/20 border border-blue-500/50 flex items-center justify-center">
318
- <div className="w-2 h-2 rounded-full bg-blue-400 animate-pulse" style={{ animationDelay: '1s' }} />
319
- </div>
320
- </div>
321
-
322
- {/* Right - Memory */}
323
- <div className="absolute right-0 top-1/2 -translate-y-1/2 flex items-center gap-2">
324
- <div className="w-4 h-4 rounded-full bg-violet-500/20 border border-violet-500/50 flex items-center justify-center">
325
- <div className="w-2 h-2 rounded-full bg-violet-400 animate-pulse" style={{ animationDelay: '1.5s' }} />
326
- </div>
327
- <span className="text-xs text-violet-400 font-medium">Memory</span>
328
- </div>
329
- </div>
330
- </div>
331
- </div>
332
- </section>
333
-
334
- {/* Demo Preview Section */}
335
- <section className="py-24 border-t border-white/5">
336
- <div className="max-w-6xl mx-auto px-6">
337
- <div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
338
- {/* Left: Text */}
339
- <div>
340
- <h2 className="text-3xl md:text-4xl font-bold tracking-tight mb-6 text-white">
341
- Experience Spiritual AI
342
- </h2>
343
- <p className="text-neutral-400 mb-6 leading-relaxed">
344
- ORA combines advanced language models with a deep understanding of theology,
345
- Scripture, and pastoral care. Whether you're seeking guidance, studying the Bible,
346
- or looking for prayer support, ORA is here to help.
347
- </p>
348
- <ul className="space-y-3 mb-8">
349
- {[
350
- 'Full markdown support for Scripture references',
351
- 'Reasoning traces show agent thinking',
352
- 'Episodic memory learns your journey',
353
- 'Multi-agent handoffs for specialized care',
354
- ].map((item, i) => (
355
- <li key={i} className="flex items-center gap-3 text-neutral-300">
356
- <span className="w-1.5 h-1.5 rounded-full bg-purple-500" />
357
- {item}
358
- </li>
359
- ))}
360
- </ul>
361
- <Link href="/dashboard">
362
- <ShinyButton>
363
- <span className="flex items-center gap-2">
364
- Try ORA Now
365
- <ArrowRight className="w-4 h-4" />
366
- </span>
367
- </ShinyButton>
368
- </Link>
369
- </div>
370
-
371
- {/* Right: Chat Preview */}
372
- <div className="rounded-2xl border border-purple-500/20 bg-[#0a0a0a] overflow-hidden">
373
- <div className="px-4 py-3 border-b border-white/5 bg-purple-500/5 flex items-center gap-3">
374
- <div className="w-8 h-8 rounded-full bg-purple-500/20 flex items-center justify-center">
375
- <Sparkles className="w-4 h-4 text-purple-400" />
376
- </div>
377
- <div>
378
- <span className="text-sm text-white font-medium">ORA</span>
379
- <span className="block text-[10px] text-emerald-400">Online</span>
380
- </div>
381
- </div>
382
- <div className="p-4 space-y-4 min-h-[300px]">
383
- {/* User Message */}
384
- <div className="flex justify-end">
385
- <div className="bg-amber-500/10 border border-amber-500/20 rounded-2xl rounded-tr-sm px-4 py-3 max-w-[80%]">
386
- <p className="text-sm text-amber-50">
387
- I'm feeling anxious about a decision I need to make. Can you help?
388
- </p>
389
- </div>
390
- </div>
391
- {/* ORA Response */}
392
- <div className="flex gap-3">
393
- <div className="w-7 h-7 rounded-full bg-rose-500/20 flex items-center justify-center border border-rose-500/30 shrink-0">
394
- <Heart className="w-3.5 h-3.5 text-rose-400" />
395
- </div>
396
- <div>
397
- <span className="text-[9px] font-mono text-rose-400 uppercase">Healer</span>
398
- <div className="bg-purple-500/10 border border-purple-500/20 rounded-2xl rounded-tl-sm px-4 py-3 mt-1">
399
- <p className="text-sm text-purple-50">
400
- I understand that feeling of anxiety when facing important decisions.
401
- Scripture reminds us in <strong>Philippians 4:6-7</strong>:
402
- </p>
403
- <blockquote className="mt-2 pl-3 border-l-2 border-purple-500/40 text-sm text-neutral-300 italic">
404
- "Do not be anxious about anything, but in everything by prayer...
405
- the peace of God will guard your hearts and minds."
406
- </blockquote>
407
- </div>
408
- </div>
409
- </div>
410
- </div>
411
- </div>
412
- </div>
413
- </div>
414
- </section>
415
-
416
- {/* CTA Section */}
417
- <section className="py-24 border-t border-white/5">
418
- <div className="max-w-4xl mx-auto px-6 text-center">
419
- <div className="w-20 h-20 mx-auto rounded-2xl bg-gradient-to-br from-purple-600 to-purple-800 flex items-center justify-center mb-8 shadow-lg shadow-purple-500/30 animate-breathe">
420
- <Sparkles className="w-10 h-10 text-white" />
421
- </div>
422
- <h2 className="text-3xl md:text-4xl font-bold tracking-tight mb-4 text-white">
423
- Ready to Deepen Your Faith?
424
- </h2>
425
- <p className="text-neutral-400 mb-10 max-w-xl mx-auto">
426
- Start your spiritual journey with ORA today. Experience AI-powered guidance
427
- that respects your faith and grows with you.
428
- </p>
429
- <Link href="/dashboard">
430
- <ShinyButton>
431
- <span className="flex items-center gap-2">
432
- <Sparkles className="w-5 h-5" />
433
- Enter the Dashboard
434
- <ArrowRight className="w-4 h-4" />
435
- </span>
436
- </ShinyButton>
437
- </Link>
438
- </div>
439
- </section>
440
- </>
441
  );
442
  }
 
1
+ "use client";
2
 
3
+ import { useEffect } from "react";
4
+ import { useRouter } from "next/navigation";
 
 
5
 
6
+ export default function Home() {
7
+ const router = useRouter();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
+ useEffect(() => {
10
+ router.push("/voice");
11
+ }, [router]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  return (
14
+ <div className="min-h-screen bg-black flex items-center justify-center">
15
+ <p className="text-white">Redirecting to ORA...</p>
16
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  );
18
  }