wu981526092 commited on
Commit
35f32c6
·
1 Parent(s): a362bd4

🎨 Complete redesign: Premium research platform landing page

Browse files

✨ Features:
- Dark gradient hero section with subtle animations
- Research paper-inspired content and terminology
- Four feature highlights (Interactive Graphs, Failure Detection, Robustness Testing, Causal Analysis)
- Professional institutions credit (Holistic AI × UCL)
- Premium glass-morphism design elements

🎨 Visual Design:
- Dark theme with gradient background (#0f172a → #334155)
- Inter font family for modern typography
- Gradient text effects and backdrop blur
- Floating video container with 'Live Demo' badge
- Hover effects and smooth transitions
- Mobile-responsive two-column layout

📝 Content Updates:
- Full research paper subtitle
- Academic-style feature descriptions
- Professional 'Research Platform' badge
- Institutional collaboration credits
- Research-focused authentication messaging

🚀 User Experience:
- Hero section spans full viewport
- Clean information hierarchy
- Call-to-action: 'Access Research Platform'
- Embedded demo video with enhanced styling
- Responsive design for all devices

Files changed (1) hide show
  1. backend/routers/auth.py +263 -73
backend/routers/auth.py CHANGED
@@ -293,7 +293,7 @@ async def login_page(request: Request):
293
  <head>
294
  <meta charset="UTF-8">
295
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
296
- <title>AgentGraph - Login Required</title>
297
  <meta http-equiv="Permissions-Policy" content="payment=(), microphone=(), camera=(), geolocation=()">
298
  <style>
299
  * {
@@ -303,88 +303,195 @@ async def login_page(request: Request):
303
  }
304
 
305
  body {
306
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
307
- background: #f8fafc;
 
 
 
 
 
 
308
  min-height: 100vh;
309
  display: flex;
310
  align-items: center;
311
  justify-content: center;
312
- padding: 20px;
313
- color: #2d3748;
314
  }
315
 
316
- .login-container {
317
- background: white;
318
- padding: 48px;
319
- border-radius: 12px;
320
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05), 0 10px 15px rgba(0, 0, 0, 0.1);
321
- max-width: 800px;
 
 
 
 
 
 
 
 
 
 
322
  width: 100%;
 
 
 
 
 
 
323
  }
324
 
325
- .header {
326
- text-align: center;
327
- margin-bottom: 40px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
328
  }
329
 
330
  h1 {
331
- font-size: 32px;
332
- font-weight: 700;
333
- margin-bottom: 8px;
334
- color: #1a202c;
 
 
 
 
335
  }
336
 
337
  .subtitle {
338
- color: #718096;
339
- font-size: 18px;
340
  font-weight: 400;
 
 
341
  }
342
 
343
- .content {
 
 
 
 
 
 
 
344
  display: grid;
345
- grid-template-columns: 1fr 1fr;
346
- gap: 40px;
347
- align-items: center;
348
  }
349
 
350
- .left-section {
351
- text-align: left;
 
 
 
 
 
352
  }
353
 
354
- .description {
355
- color: #4a5568;
356
- line-height: 1.6;
357
- margin-bottom: 32px;
358
- font-size: 16px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
  }
360
 
361
  .login-btn {
362
- background: #3182ce;
363
  color: white;
364
- padding: 16px 32px;
365
- border-radius: 8px;
366
  text-decoration: none;
367
  font-weight: 600;
368
  font-size: 16px;
369
- display: inline-block;
370
- transition: all 0.2s ease;
 
 
 
371
  border: none;
372
  cursor: pointer;
 
373
  }
374
 
375
  .login-btn:hover {
376
- background: #2c5282;
377
- transform: translateY(-1px);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  }
379
 
380
  .video-container {
381
  position: relative;
382
  width: 100%;
383
  height: 0;
384
- padding-bottom: 56.25%; /* 16:9 aspect ratio */
385
- border-radius: 8px;
386
  overflow: hidden;
387
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
 
 
 
 
388
  }
389
 
390
  .video-container iframe {
@@ -394,67 +501,150 @@ async def login_page(request: Request):
394
  width: 100%;
395
  height: 100%;
396
  border: 0;
 
397
  }
398
 
399
- .notice {
400
- text-align: center;
 
 
 
 
 
 
 
 
 
 
 
 
401
  margin-top: 32px;
402
  padding-top: 24px;
403
- border-top: 1px solid #e2e8f0;
404
- color: #718096;
 
 
 
 
 
 
 
 
 
 
405
  font-size: 14px;
 
 
406
  }
407
 
408
  @media (max-width: 768px) {
409
- .login-container {
410
- padding: 32px 24px;
 
 
411
  }
412
 
413
- .content {
 
 
 
 
 
 
 
 
 
 
414
  grid-template-columns: 1fr;
415
- gap: 32px;
416
  }
417
 
418
  h1 {
419
- font-size: 28px;
420
  }
421
 
422
  .subtitle {
423
- font-size: 16px;
 
 
 
 
 
 
 
 
 
 
424
  }
425
  }
426
  </style>
 
427
  </head>
428
  <body>
429
- <div class="login-container">
430
- <div class="header">
431
- <h1>AgentGraph</h1>
432
- <div class="subtitle">AI-Powered Knowledge Graph Analysis</div>
433
- </div>
434
-
435
- <div class="content">
436
- <div class="left-section">
 
 
437
  <p class="description">
438
- AgentGraph uses advanced AI models to extract and analyze knowledge graphs from conversational data.
439
- Authentication is required to ensure responsible usage of AI resources and prevent abuse.
 
440
  </p>
441
 
442
- <a href="/auth/login" class="login-btn">Continue with Hugging Face</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
  </div>
444
 
445
- <div class="video-container">
446
- <iframe
447
- src="https://www.youtube.com/embed/btrS9pfDYJY?si=dDX4tIs-oS2O2d2p"
448
- title="AgentGraph Demo"
449
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
450
- allowfullscreen>
451
- </iframe>
 
 
 
452
  </div>
453
  </div>
454
-
455
- <div class="notice">
456
- By continuing, you agree to use this service responsibly and in accordance with our usage policies.
457
- </div>
458
  </div>
459
  </body>
460
  </html>
 
293
  <head>
294
  <meta charset="UTF-8">
295
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
296
+ <title>AgentGraph - Interactive Analysis Platform for Agentic AI Systems</title>
297
  <meta http-equiv="Permissions-Policy" content="payment=(), microphone=(), camera=(), geolocation=()">
298
  <style>
299
  * {
 
303
  }
304
 
305
  body {
306
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
307
+ background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #334155 100%);
308
+ min-height: 100vh;
309
+ color: #f8fafc;
310
+ overflow-x: hidden;
311
+ }
312
+
313
+ .hero-section {
314
  min-height: 100vh;
315
  display: flex;
316
  align-items: center;
317
  justify-content: center;
318
+ padding: 40px 20px;
319
+ position: relative;
320
  }
321
 
322
+ .hero-section::before {
323
+ content: '';
324
+ position: absolute;
325
+ top: 0;
326
+ left: 0;
327
+ right: 0;
328
+ bottom: 0;
329
+ background:
330
+ radial-gradient(circle at 20% 50%, rgba(120, 119, 198, 0.3) 0%, transparent 50%),
331
+ radial-gradient(circle at 80% 20%, rgba(255, 107, 53, 0.2) 0%, transparent 50%),
332
+ radial-gradient(circle at 40% 80%, rgba(34, 197, 94, 0.2) 0%, transparent 50%);
333
+ pointer-events: none;
334
+ }
335
+
336
+ .container {
337
+ max-width: 1200px;
338
  width: 100%;
339
+ display: grid;
340
+ grid-template-columns: 1fr 1fr;
341
+ gap: 80px;
342
+ align-items: center;
343
+ position: relative;
344
+ z-index: 1;
345
  }
346
 
347
+ .content-section {
348
+ padding: 0 20px;
349
+ }
350
+
351
+ .badge {
352
+ display: inline-flex;
353
+ align-items: center;
354
+ background: rgba(255, 255, 255, 0.1);
355
+ backdrop-filter: blur(10px);
356
+ border: 1px solid rgba(255, 255, 255, 0.2);
357
+ padding: 8px 16px;
358
+ border-radius: 24px;
359
+ font-size: 14px;
360
+ font-weight: 500;
361
+ margin-bottom: 24px;
362
+ color: #f1f5f9;
363
+ }
364
+
365
+ .badge::before {
366
+ content: '🎓';
367
+ margin-right: 8px;
368
  }
369
 
370
  h1 {
371
+ font-size: clamp(2.5rem, 5vw, 4rem);
372
+ font-weight: 800;
373
+ line-height: 1.1;
374
+ margin-bottom: 16px;
375
+ background: linear-gradient(135deg, #f8fafc 0%, #cbd5e1 100%);
376
+ -webkit-background-clip: text;
377
+ -webkit-text-fill-color: transparent;
378
+ background-clip: text;
379
  }
380
 
381
  .subtitle {
382
+ font-size: 20px;
383
+ color: #94a3b8;
384
  font-weight: 400;
385
+ line-height: 1.5;
386
+ margin-bottom: 32px;
387
  }
388
 
389
+ .description {
390
+ font-size: 16px;
391
+ line-height: 1.7;
392
+ color: #cbd5e1;
393
+ margin-bottom: 40px;
394
+ }
395
+
396
+ .features-grid {
397
  display: grid;
398
+ grid-template-columns: repeat(2, 1fr);
399
+ gap: 16px;
400
+ margin-bottom: 40px;
401
  }
402
 
403
+ .feature-item {
404
+ background: rgba(255, 255, 255, 0.05);
405
+ backdrop-filter: blur(10px);
406
+ border: 1px solid rgba(255, 255, 255, 0.1);
407
+ padding: 16px;
408
+ border-radius: 12px;
409
+ transition: all 0.3s ease;
410
  }
411
 
412
+ .feature-item:hover {
413
+ background: rgba(255, 255, 255, 0.08);
414
+ border-color: rgba(255, 255, 255, 0.2);
415
+ }
416
+
417
+ .feature-title {
418
+ font-weight: 600;
419
+ font-size: 14px;
420
+ color: #f1f5f9;
421
+ margin-bottom: 4px;
422
+ }
423
+
424
+ .feature-desc {
425
+ font-size: 12px;
426
+ color: #94a3b8;
427
+ line-height: 1.4;
428
+ }
429
+
430
+ .cta-section {
431
+ display: flex;
432
+ flex-direction: column;
433
+ gap: 16px;
434
  }
435
 
436
  .login-btn {
437
+ background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
438
  color: white;
439
+ padding: 18px 32px;
440
+ border-radius: 12px;
441
  text-decoration: none;
442
  font-weight: 600;
443
  font-size: 16px;
444
+ display: inline-flex;
445
+ align-items: center;
446
+ justify-content: center;
447
+ gap: 8px;
448
+ transition: all 0.3s ease;
449
  border: none;
450
  cursor: pointer;
451
+ box-shadow: 0 4px 14px rgba(59, 130, 246, 0.3);
452
  }
453
 
454
  .login-btn:hover {
455
+ transform: translateY(-2px);
456
+ box-shadow: 0 8px 25px rgba(59, 130, 246, 0.4);
457
+ }
458
+
459
+ .login-btn::after {
460
+ content: '→';
461
+ transition: transform 0.3s ease;
462
+ }
463
+
464
+ .login-btn:hover::after {
465
+ transform: translateX(4px);
466
+ }
467
+
468
+ .research-info {
469
+ background: rgba(255, 255, 255, 0.05);
470
+ backdrop-filter: blur(10px);
471
+ border: 1px solid rgba(255, 255, 255, 0.1);
472
+ padding: 16px;
473
+ border-radius: 12px;
474
+ font-size: 14px;
475
+ color: #94a3b8;
476
+ }
477
+
478
+ .video-section {
479
+ position: relative;
480
+ padding: 20px;
481
  }
482
 
483
  .video-container {
484
  position: relative;
485
  width: 100%;
486
  height: 0;
487
+ padding-bottom: 56.25%;
488
+ border-radius: 16px;
489
  overflow: hidden;
490
+ box-shadow:
491
+ 0 20px 40px rgba(0, 0, 0, 0.3),
492
+ 0 0 0 1px rgba(255, 255, 255, 0.1);
493
+ background: rgba(255, 255, 255, 0.05);
494
+ backdrop-filter: blur(10px);
495
  }
496
 
497
  .video-container iframe {
 
501
  width: 100%;
502
  height: 100%;
503
  border: 0;
504
+ border-radius: 16px;
505
  }
506
 
507
+ .video-overlay {
508
+ position: absolute;
509
+ top: -20px;
510
+ right: -20px;
511
+ background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
512
+ color: white;
513
+ padding: 8px 16px;
514
+ border-radius: 8px;
515
+ font-size: 12px;
516
+ font-weight: 600;
517
+ box-shadow: 0 4px 14px rgba(34, 197, 94, 0.3);
518
+ }
519
+
520
+ .institutions {
521
  margin-top: 32px;
522
  padding-top: 24px;
523
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
524
+ }
525
+
526
+ .institutions-title {
527
+ font-size: 12px;
528
+ color: #64748b;
529
+ text-transform: uppercase;
530
+ letter-spacing: 1px;
531
+ margin-bottom: 12px;
532
+ }
533
+
534
+ .institutions-list {
535
  font-size: 14px;
536
+ color: #94a3b8;
537
+ line-height: 1.6;
538
  }
539
 
540
  @media (max-width: 768px) {
541
+ .container {
542
+ grid-template-columns: 1fr;
543
+ gap: 40px;
544
+ padding: 20px;
545
  }
546
 
547
+ .content-section {
548
+ padding: 0;
549
+ order: 2;
550
+ }
551
+
552
+ .video-section {
553
+ order: 1;
554
+ padding: 0;
555
+ }
556
+
557
+ .features-grid {
558
  grid-template-columns: 1fr;
 
559
  }
560
 
561
  h1 {
562
+ font-size: 2.5rem;
563
  }
564
 
565
  .subtitle {
566
+ font-size: 18px;
567
+ }
568
+ }
569
+
570
+ @media (max-width: 480px) {
571
+ .hero-section {
572
+ padding: 20px 10px;
573
+ }
574
+
575
+ .video-overlay {
576
+ display: none;
577
  }
578
  }
579
  </style>
580
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
581
  </head>
582
  <body>
583
+ <div class="hero-section">
584
+ <div class="container">
585
+ <div class="content-section">
586
+ <div class="badge">Research Platform</div>
587
+
588
+ <h1>AgentGraph</h1>
589
+ <div class="subtitle">
590
+ Trace-to-Graph Platform for Interactive Analysis and Robustness Testing in Agentic AI Systems
591
+ </div>
592
+
593
  <p class="description">
594
+ Convert execution logs into interactive knowledge graphs with actionable insights.
595
+ Enable qualitative failure detection and quantitative robustness evaluation through
596
+ perturbation testing and causal attribution.
597
  </p>
598
 
599
+ <div class="features-grid">
600
+ <div class="feature-item">
601
+ <div class="feature-title">Interactive Graphs</div>
602
+ <div class="feature-desc">Transform traces into knowledge graphs with nodes for agents, tasks, and tools</div>
603
+ </div>
604
+ <div class="feature-item">
605
+ <div class="feature-title">Failure Detection</div>
606
+ <div class="feature-desc">Identify agent errors, planning issues, and hallucinations automatically</div>
607
+ </div>
608
+ <div class="feature-item">
609
+ <div class="feature-title">Robustness Testing</div>
610
+ <div class="feature-desc">Jailbreak attempts and counterfactual fairness evaluation</div>
611
+ </div>
612
+ <div class="feature-item">
613
+ <div class="feature-title">Causal Analysis</div>
614
+ <div class="feature-desc">Attribution of behavioral changes to specific components</div>
615
+ </div>
616
+ </div>
617
+
618
+ <div class="cta-section">
619
+ <a href="/auth/login" class="login-btn">
620
+ Access Research Platform
621
+ </a>
622
+
623
+ <div class="research-info">
624
+ Authentication required to ensure responsible usage of OpenAI models and prevent abuse of research resources.
625
+ </div>
626
+ </div>
627
+
628
+ <div class="institutions">
629
+ <div class="institutions-title">Research Collaboration</div>
630
+ <div class="institutions-list">
631
+ Holistic AI × Centre for Artificial Intelligence, UCL
632
+ </div>
633
+ </div>
634
  </div>
635
 
636
+ <div class="video-section">
637
+ <div class="video-container">
638
+ <div class="video-overlay">Live Demo</div>
639
+ <iframe
640
+ src="https://www.youtube.com/embed/btrS9pfDYJY?si=dDX4tIs-oS2O2d2p"
641
+ title="AgentGraph: Interactive Analysis Platform Demo"
642
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
643
+ allowfullscreen>
644
+ </iframe>
645
+ </div>
646
  </div>
647
  </div>
 
 
 
 
648
  </div>
649
  </body>
650
  </html>