Files
chorus-services-website/components/sections/IntegrationShowcase.tsx
anthonyrawlins f343f89d24 Initial commit: CHORUS Services marketing website
Complete Next.js website with Docker containerization:
- Next.js 14 with TypeScript and Tailwind CSS
- Responsive design with modern UI components
- Hero section, features showcase, testimonials
- FAQ section with comprehensive content
- Contact forms and newsletter signup
- Docker production build with Nginx
- Health checks and monitoring support
- SEO optimization and performance tuning

Ready for integration as git submodule in main CHORUS project.

Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 22:45:06 +10:00

356 lines
14 KiB
TypeScript

'use client';
import React from 'react';
import { motion } from 'framer-motion';
import { Typography, Row, Col, Card, Space } from 'antd';
import {
RocketIcon,
ZapIcon,
DatabaseIcon,
BrainCircuitIcon,
ArrowRightIcon,
RefreshCwIcon,
NetworkIcon,
FlowIcon
} from 'lucide-react';
const { Title, Paragraph, Text } = Typography;
// Animation variants
const fadeInUp = {
hidden: { opacity: 0, y: 30 },
visible: {
opacity: 1,
y: 0,
transition: { duration: 0.6, ease: 'easeOut' }
}
};
const stagger = {
visible: {
transition: {
staggerChildren: 0.2
}
}
};
const flowAnimation = {
hidden: { pathLength: 0, opacity: 0 },
visible: {
pathLength: 1,
opacity: 1,
transition: {
duration: 2,
ease: 'easeInOut',
repeat: Infinity,
repeatType: 'loop' as const,
repeatDelay: 1
}
}
};
// Component data
const components = [
{
name: 'WHOOSH',
icon: RocketIcon,
color: '#007aff',
description: 'Orchestrates workflows and manages agent tasks',
position: { x: 10, y: 20 }
},
{
name: 'BZZZ',
icon: ZapIcon,
color: '#30d158',
description: 'Coordinates P2P communication between agents',
position: { x: 70, y: 20 }
},
{
name: 'SLURP',
icon: DatabaseIcon,
color: '#eab308',
description: 'Curates and filters context based on roles',
position: { x: 10, y: 70 }
},
{
name: 'COOEE',
icon: BrainCircuitIcon,
color: '#a855f7',
description: 'Learns and adapts from agent feedback',
position: { x: 70, y: 70 }
}
];
// Integration flows
const flows = [
{ from: 'WHOOSH', to: 'BZZZ', description: 'Task Distribution' },
{ from: 'BZZV', to: 'SLURP', description: 'Context Requests' },
{ from: 'SLURP', to: 'COOEE', description: 'Feedback Data' },
{ from: 'COOEE', to: 'WHOOSH', description: 'Performance Insights' }
];
export default function IntegrationShowcase() {
return (
<section id="integration" className="section-padding bg-gradient-to-br from-purple-950 via-chorus-charcoal to-slate-900">
<div className="container-chorus">
<motion.div
initial="hidden"
whileInView="visible"
viewport={{ once: true, margin: "-100px" }}
variants={stagger}
>
{/* Header */}
<motion.div variants={fadeInUp} className="text-center mb-16">
<div className="inline-flex items-center justify-center p-4 bg-gradient-to-r from-chorus-blue/20 to-chorus-green/20 rounded-full mb-6">
<NetworkIcon size={48} className="text-white" />
</div>
<Title level={1} className="text-white mb-4">
The Complete CHORUS Ecosystem
</Title>
<Paragraph className="text-lg text-gray-300 max-w-3xl mx-auto">
Four powerful components working in harmony to create the most advanced
AI orchestration platform. See how they integrate to deliver unmatched performance.
</Paragraph>
</motion.div>
{/* Interactive Architecture Diagram */}
<motion.div variants={fadeInUp} className="mb-16">
<Card className="glass-effect border-0" bodyStyle={{ padding: '3rem' }}>
<Title level={2} className="text-white text-center mb-8">
System Architecture & Data Flow
</Title>
<div className="relative h-96 mb-8">
{/* SVG Flow Diagram */}
<svg
viewBox="0 0 100 100"
className="absolute inset-0 w-full h-full"
style={{ zIndex: 1 }}
>
{/* Flow paths */}
<motion.path
d="M 25 25 Q 50 15 75 25"
fill="none"
stroke="#007aff"
strokeWidth="0.5"
strokeDasharray="2,2"
variants={flowAnimation}
initial="hidden"
animate="visible"
/>
<motion.path
d="M 75 35 Q 85 50 75 65"
fill="none"
stroke="#30d158"
strokeWidth="0.5"
strokeDasharray="2,2"
variants={flowAnimation}
initial="hidden"
animate="visible"
/>
<motion.path
d="M 65 75 Q 50 85 35 75"
fill="none"
stroke="#eab308"
strokeWidth="0.5"
strokeDasharray="2,2"
variants={flowAnimation}
initial="hidden"
animate="visible"
/>
<motion.path
d="M 25 65 Q 15 50 25 35"
fill="none"
stroke="#a855f7"
strokeWidth="0.5"
strokeDasharray="2,2"
variants={flowAnimation}
initial="hidden"
animate="visible"
/>
</svg>
{/* Component nodes */}
{components.map((component, index) => {
const Icon = component.icon;
return (
<motion.div
key={component.name}
className="absolute transform -translate-x-1/2 -translate-y-1/2"
style={{
left: `${component.position.x}%`,
top: `${component.position.y}%`,
zIndex: 2
}}
variants={fadeInUp}
whileHover={{ scale: 1.1 }}
>
<div className="text-center">
<div
className="w-16 h-16 rounded-full flex items-center justify-center glass-effect border-2 mb-3 mx-auto"
style={{ borderColor: component.color }}
>
<Icon size={28} style={{ color: component.color }} />
</div>
<Text className="text-white font-semibold block">{component.name}</Text>
<Text className="text-xs text-gray-400 max-w-24 block">
{component.description}
</Text>
</div>
</motion.div>
);
})}
</div>
{/* Flow descriptions */}
<Row gutter={[16, 16]}>
<Col xs={12} md={6}>
<div className="text-center p-3 bg-chorus-blue/10 rounded-lg">
<ArrowRightIcon size={20} className="text-chorus-blue mx-auto mb-2" />
<Text className="text-xs text-gray-300">Task Distribution</Text>
</div>
</Col>
<Col xs={12} md={6}>
<div className="text-center p-3 bg-green-500/10 rounded-lg">
<ArrowRightIcon size={20} className="text-green-500 mx-auto mb-2" />
<Text className="text-xs text-gray-300">Context Requests</Text>
</div>
</Col>
<Col xs={12} md={6}>
<div className="text-center p-3 bg-yellow-500/10 rounded-lg">
<ArrowRightIcon size={20} className="text-yellow-500 mx-auto mb-2" />
<Text className="text-xs text-gray-300">Feedback Data</Text>
</div>
</Col>
<Col xs={12} md={6}>
<div className="text-center p-3 bg-purple-500/10 rounded-lg">
<RefreshCwIcon size={20} className="text-purple-500 mx-auto mb-2" />
<Text className="text-xs text-gray-300">Performance Insights</Text>
</div>
</Col>
</Row>
</Card>
</motion.div>
{/* Integration Benefits */}
<Row gutter={[32, 32]} className="mb-16">
<Col xs={24} lg={12}>
<motion.div variants={fadeInUp}>
<Card className="h-full glass-effect border-0" bodyStyle={{ padding: '2rem' }}>
<Title level={3} className="text-white mb-4">Seamless Integration</Title>
<Space direction="vertical" size="large" className="w-full">
<div>
<Text className="text-chorus-blue font-semibold">Unified API Layer</Text>
<Paragraph className="text-gray-300 mb-0">
Single API interface for all CHORUS services with consistent authentication and error handling.
</Paragraph>
</div>
<div>
<Text className="text-chorus-green font-semibold">Real-time Synchronization</Text>
<Paragraph className="text-gray-300 mb-0">
Event-driven architecture ensures all components stay in sync with minimal latency.
</Paragraph>
</div>
<div>
<Text className="text-yellow-500 font-semibold">Shared Context</Text>
<Paragraph className="text-gray-300 mb-0">
Common context model across all services for consistent data interpretation.
</Paragraph>
</div>
</Space>
</Card>
</motion.div>
</Col>
<Col xs={24} lg={12}>
<motion.div variants={fadeInUp}>
<Card className="h-full glass-effect border-0" bodyStyle={{ padding: '2rem' }}>
<Title level={3} className="text-white mb-4">Enterprise Benefits</Title>
<Space direction="vertical" size="large" className="w-full">
<div>
<Text className="text-purple-500 font-semibold">Scalable Architecture</Text>
<Paragraph className="text-gray-300 mb-0">
Each component scales independently while maintaining tight integration.
</Paragraph>
</div>
<div>
<Text className="text-orange-500 font-semibold">Fault Tolerance</Text>
<Paragraph className="text-gray-300 mb-0">
Distributed design with automatic failover and graceful degradation.
</Paragraph>
</div>
<div>
<Text className="text-red-500 font-semibold">Performance Monitoring</Text>
<Paragraph className="text-gray-300 mb-0">
Built-in monitoring and alerting across the entire ecosystem.
</Paragraph>
</div>
</Space>
</Card>
</motion.div>
</Col>
</Row>
{/* Data Flow Steps */}
<motion.div variants={fadeInUp}>
<Card className="glass-effect border-0" bodyStyle={{ padding: '3rem' }}>
<Title level={2} className="text-white text-center mb-8">
How It All Works Together
</Title>
<Row gutter={[24, 24]}>
<Col xs={24} md={6}>
<div className="text-center">
<div className="w-12 h-12 bg-chorus-blue/20 rounded-full flex items-center justify-center mx-auto mb-4">
<Text className="text-chorus-blue font-bold">1</Text>
</div>
<Title level={5} className="text-white mb-2">Task Creation</Title>
<Paragraph className="text-gray-400 text-sm">
WHOOSH receives workflow requests and creates optimized task distributions
</Paragraph>
</div>
</Col>
<Col xs={24} md={6}>
<div className="text-center">
<div className="w-12 h-12 bg-green-500/20 rounded-full flex items-center justify-center mx-auto mb-4">
<Text className="text-green-500 font-bold">2</Text>
</div>
<Title level={5} className="text-white mb-2">Agent Coordination</Title>
<Paragraph className="text-gray-400 text-sm">
BZZZ coordinates agent communication and ensures reliable task delivery
</Paragraph>
</div>
</Col>
<Col xs={24} md={6}>
<div className="text-center">
<div className="w-12 h-12 bg-yellow-500/20 rounded-full flex items-center justify-center mx-auto mb-4">
<Text className="text-yellow-500 font-bold">3</Text>
</div>
<Title level={5} className="text-white mb-2">Context Delivery</Title>
<Paragraph className="text-gray-400 text-sm">
SLURP provides relevant, role-based context to agents for informed decisions
</Paragraph>
</div>
</Col>
<Col xs={24} md={6}>
<div className="text-center">
<div className="w-12 h-12 bg-purple-500/20 rounded-full flex items-center justify-center mx-auto mb-4">
<Text className="text-purple-500 font-bold">4</Text>
</div>
<Title level={5} className="text-white mb-2">Continuous Learning</Title>
<Paragraph className="text-gray-400 text-sm">
COOEE collects feedback and optimizes the entire system for better performance
</Paragraph>
</div>
</Col>
</Row>
</Card>
</motion.div>
</motion.div>
</div>
</section>
);
}