Spaces:
Running
Running
'use client'; | |
import Image from 'next/image' | |
import { Button } from "@/components/ui/button" | |
import { useRouter } from 'next/navigation' | |
import { Database, Cpu, Share2, BarChart3, ChevronDown, Plus, Minus, PlayCircle, Github, Copy, Calendar } from 'lucide-react' | |
import { motion, AnimatePresence } from 'framer-motion' | |
import { useState } from 'react' | |
import Link from 'next/link' | |
const colorScheme = { | |
primary: "#DB2777", // Main pink color for buttons and primary elements | |
hover: "#BE185D", // Darker pink for hover states | |
text: { | |
primary: "#DB2777", // Pink for primary text | |
secondary: "#6B7280", // Gray for secondary text | |
white: "#FFFFFF" // White text | |
}, | |
background: "#FDF2F8" // Light pink background | |
}; | |
export default function HomePage() { | |
const router = useRouter(); | |
const [openFaqIndex, setOpenFaqIndex] = useState<number | null>(null); | |
const [copied, setCopied] = useState(false); | |
const copyCommand = () => { | |
navigator.clipboard.writeText('pip install starfish-core'); | |
setCopied(true); | |
setTimeout(() => setCopied(false), 2000); | |
}; | |
const faqs = [ | |
{ | |
question: "What is Starfishdata's mission in healthcare?", | |
answer: "Starfishdata is dedicated to solving the data bottleneck in Healthcare AI by providing high-quality, privacy-preserving synthetic data for research, development, and deployment of AI solutions." | |
}, | |
{ | |
question: "How does Starfishdata ensure patient privacy?", | |
answer: "We use advanced generative models and strict privacy-preserving techniques to ensure that no real patient data is ever exposed or re-identifiable in our synthetic datasets." | |
}, | |
{ | |
question: "Who can benefit from Starfishdata's solutions?", | |
answer: "Healthcare AI startups, hospitals, research institutions, and any organization facing data scarcity or privacy challenges in healthcare can benefit from our synthetic data platform." | |
}, | |
{ | |
question: "What makes Starfishdata different from other synthetic data providers?", | |
answer: "Our exclusive focus on healthcare, deep expertise in generative AI, and commitment to regulatory compliance set us apart. We partner closely with clients to deliver data that accelerates innovation while protecting patient privacy." | |
} | |
]; | |
const toggleFaq = (index: number) => { | |
setOpenFaqIndex(openFaqIndex === index ? null : index); | |
}; | |
const scrollToVideo = () => { | |
const videoSection = document.getElementById('youtube-video') | |
if (videoSection) { | |
videoSection.scrollIntoView({ | |
behavior: 'smooth', | |
block: 'start' | |
}) | |
} | |
} | |
return ( | |
<div className="min-h-screen bg-[#FDF2F8] font-sans overflow-x-hidden"> | |
<motion.header | |
className="min-h-screen flex flex-col items-center justify-center py-10" | |
initial={{ opacity: 0 }} | |
animate={{ opacity: 1 }} | |
> | |
<div className="text-center relative z-10 w-full max-w-2xl mx-auto"> | |
<motion.div | |
className="w-44 h-44 mx-auto mb-8" | |
animate={{ | |
y: [0, -10, 0], | |
rotate: [0, 5, -5, 0] | |
}} | |
transition={{ | |
repeat: Infinity, | |
duration: 4, | |
ease: "easeInOut" | |
}} | |
> | |
<Image | |
src="/starfish_logo.png" | |
alt="Starfish Logo" | |
width={180} | |
height={180} | |
className="w-full h-full object-contain" | |
priority | |
/> | |
</motion.div> | |
<motion.h1 | |
className="text-4xl sm:text-5xl md:text-6xl font-bold text-[#DB2777] mb-4" | |
initial={{ y: 20, opacity: 0 }} | |
animate={{ y: 0, opacity: 1 }} | |
transition={{ delay: 0.2 }} | |
> | |
Starfishdata | |
</motion.h1> | |
<motion.p | |
className="text-lg sm:text-xl text-[#6B7280] mb-8 max-w-xl mx-auto font-normal" | |
initial={{ y: 20, opacity: 0 }} | |
animate={{ y: 0, opacity: 1 }} | |
transition={{ delay: 0.4 }} | |
> | |
Solving the data bottleneck in Healthcare AI | |
</motion.p> | |
{/* Social Links (X, Discord, Hugging Face) */} | |
<div className="flex justify-center gap-4 mb-8"> | |
<Link | |
href="https://github.com/starfishdata/starfish" | |
target="_blank" | |
className="text-gray-600 hover:text-[#DB2777] transition-colors" | |
aria-label="GitHub" | |
> | |
<Github className="h-5 w-5" /> | |
</Link> | |
<Link | |
href="https://twitter.com/starfishdata" | |
target="_blank" | |
className="text-gray-600 hover:text-[#DB2777] transition-colors" | |
aria-label="Twitter" | |
> | |
<svg className="h-5 w-5" viewBox="0 0 24 24" fill="currentColor"> | |
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/> | |
</svg> | |
</Link> | |
<Link | |
href="https://discord.com/invite/qWKmeUtb" | |
target="_blank" | |
className="text-gray-600 hover:text-[#DB2777] transition-colors" | |
aria-label="Discord" | |
> | |
<svg className="h-5 w-5" viewBox="0 0 24 24" fill="currentColor"> | |
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z"/> | |
</svg> | |
</Link> | |
<Link | |
href="https://huggingface.co/starfishdata" | |
target="_blank" | |
className="text-gray-600 hover:text-[#DB2777] transition-colors" | |
aria-label="Hugging Face" | |
> | |
<svg className="h-5 w-5" viewBox="0 0 24 24" fill="currentColor"> | |
<path d="M12.025 1.13c-5.77 0-10.449 4.647-10.449 10.378 0 1.112.178 2.181.503 3.185.064-.222.203-.444.416-.577a.96.96 0 0 1 .524-.15c.293 0 .584.124.84.284.278.173.48.408.71.694.226.282.458.611.684.951v-.014c.017-.324.106-.622.264-.874s.403-.487.762-.543c.3-.047.596.06.787.203s.31.313.4.467c.15.257.212.468.233.542.01.026.653 1.552 1.657 2.54.616.605 1.01 1.223 1.082 1.912.055.537-.096 1.059-.38 1.572.637.121 1.294.187 1.967.187.657 0 1.298-.063 1.921-.178-.287-.517-.44-1.041-.384-1.581.07-.69.465-1.307 1.081-1.913 1.004-.987 1.647-2.513 1.657-2.539.021-.074.083-.285.233-.542.09-.154.208-.323.4-.467a1.08 1.08 0 0 1 .787-.203c.359.056.604.29.762.543s.247.55.265.874v.015c.225-.34.457-.67.683-.952.23-.286.432-.52.71-.694.257-.16.547-.284.84-.285a.97.97 0 0 1 .524.151c.228.143.373.388.43.625l.006.04a10.3 10.3 0 0 0 .534-3.273c0-5.731-4.678-10.378-10.449-10.378M8.327 6.583a1.5 1.5 0 0 1 .713.174 1.487 1.487 0 0 1 .617 2.013c-.183.343-.762-.214-1.102-.094-.38.134-.532.914-.917.71a1.487 1.487 0 0 1 .69-2.803m7.486 0a1.487 1.487 0 0 1 .689 2.803c-.385.204-.536-.576-.916-.71-.34-.12-.92.437-1.103.094a1.487 1.487 0 0 1 .617-2.013 1.5 1.5 0 0 1 .713-.174m-10.68 1.55a.96.96 0 1 1 0 1.921.96.96 0 0 1 0-1.92m13.838 0a.96.96 0 1 1 0 1.92.96.96 0 0 1 0-1.92M8.489 11.458c.588.01 1.965 1.157 3.572 1.164 1.607-.007 2.984-1.155 3.572-1.164.196-.003.305.12.305.454 0 .886-.424 2.328-1.563 3.202-.22-.756-1.396-1.366-1.63-1.32q-.011.001-.02.006l-.044.026-.01.008-.03.024q-.018.017-.035.036l-.032.04a1 1 0 0 0-.058.09l-.014.025q-.049.088-.11.19a1 1 0 0 1-.083.116 1.2 1.2 0 0 1-.173.18q-.035.029-.075.058a1.3 1.3 0 0 1-.251-.243 1 1 0 0 1-.076-.107c-.124-.193-.177-.363-.337-.444-.034-.016-.104-.008-.2.022q-.094.03-.216.087-.06.028-.125.063l-.13.074q-.067.04-.136.086a3 3 0 0 0-.135.096 3 3 0 0 0-.26.219 2 2 0 0 0-.12.121 2 2 0 0 0-.106.128l-.002.002a2 2 0 0 0-.09.132l-.001.001a1.2 1.2 0 0 0-.105.212q-.013.036-.024.073c-1.139-.875-1.563-2.317-1.563-3.203 0-.334.109-.457.305-.454m.836 10.354c.824-1.19.766-2.082-.365-3.194-1.13-1.112-1.789-2.738-1.789-2.738s-.246-.945-.806-.858-.97 1.499.202 2.362c1.173.864-.233 1.45-.685.64-.45-.812-1.683-2.896-2.322-3.295s-1.089-.175-.938.647 2.822 2.813 2.562 3.244-1.176-.506-1.176-.506-2.866-2.567-3.49-1.898.473 1.23 2.037 2.16c1.564.932 1.686 1.178 1.464 1.53s-3.675-2.511-4-1.297c-.323 1.214 3.524 1.567 3.287 2.405-.238.839 2.71-1.587 3.216-.642.506.946 3.49 2.056 3.522 2.064 1.29.33 4.568 1.028 5.713-.624m5.349 0c-.824-1.19-.766-2.082.365-3.194 1.13-1.112 1.789-2.738 1.789-2.738s.246-.945.806-.858.97 1.499-.202 2.362c-1.173.864.233 1.45.685.64.451-.812 1.683-2.896 2.322-3.295s1.089-.175.938.647-2.822 2.813-2.562 3.244 1.176-.506 1.176-.506 2.866-2.567 3.49-1.898-.473 1.23-2.037 2.16c-1.564.932-1.686 1.178-1.464 1.53s3.675-2.511 4-1.297c.323 1.214-3.524 1.567-3.287 2.405.238.839 2.71-1.587 3.216-.642.506.946-3.49 2.056-3.522 2.064-1.29.33-4.568 1.028-5.713-.624"/> | |
</svg> | |
</Link> | |
</div> | |
{/* Schedule a Call with Us - Main CTA */} | |
<Link | |
href="https://calendly.com/d/crsb-ckq-fv2/chat-with-starfishdata-team" | |
target="_blank" | |
className="inline-flex items-center justify-center h-10 px-8 text-sm font-semibold rounded-lg bg-[#DB2777] text-white hover:bg-[#BE185D] transition-all duration-200 mb-8 mx-auto shadow-sm" | |
> | |
<Calendar className="mr-2 h-5 w-5" /> | |
Schedule a Call with Us | |
</Link> | |
{/* Divider below CTA */} | |
<div className="w-full flex justify-center mb-8"><div className="w-24 border-t border-gray-200"></div></div> | |
{/* Code block for pip install */} | |
<div className="relative mb-8 px-2 sm:px-4"> | |
<div className="text-sm text-gray-500 mb-2">Try our open source library</div> | |
<div className="bg-gray-900 rounded-lg p-4 flex justify-between items-center max-w-xs sm:max-w-sm mx-auto"> | |
<code className="text-white text-sm font-mono">pip install starfish-core</code> | |
<button | |
onClick={copyCommand} | |
className="text-gray-400 hover:text-white transition-colors ml-4" | |
> | |
{copied ? ( | |
<span className="text-green-400 text-sm">Copied!</span> | |
) : ( | |
<Copy className="h-4 w-4" /> | |
)} | |
</button> | |
</div> | |
</div> | |
{/* Consistent Secondary Buttons under code block */} | |
<div className="flex flex-col sm:flex-row gap-4 justify-center items-center mb-8 w-full max-w-md mx-auto"> | |
<Link | |
href="https://github.com/starfishdata/starfish" | |
target="_blank" | |
className="sm:min-w-[210px] h-10 px-8 text-sm font-semibold rounded-lg bg-[#DB2777] text-white whitespace-nowrap hover:bg-[#BE185D] transition-all duration-200 flex items-center justify-center" | |
> | |
<Github className="mr-2 h-5 w-5" /> | |
Star on GitHub | |
</Link> | |
<Button | |
type="button" | |
className="sm:min-w-[210px] h-10 px-8 text-sm font-semibold rounded-lg bg-white text-[#DB2777] whitespace-nowrap border border-[#DB2777] hover:bg-pink-50 transition-all duration-200 flex items-center justify-center" | |
onClick={() => router.push('/signin')} | |
> | |
Try our managed version | |
</Button> | |
</div> | |
{/* Divider before Supported by section */} | |
<div className="w-full flex justify-center mb-8"><div className="w-24 border-t border-gray-200"></div></div> | |
{/* Supported by Section (social proof) */} | |
<div className="w-full flex flex-col items-center mt-8"> | |
<h2 className="text-base font-bold text-[#DB2777] mb-2">Supported by</h2> | |
<div className="flex flex-row items-center justify-center gap-12"> | |
<Image | |
src="/nvidia.png" | |
alt="NVIDIA Inception Partner" | |
width={180} | |
height={64} | |
className="object-contain h-16 w-auto" | |
/> | |
<Image | |
src="/microsoft_startups.png" | |
alt="Microsoft for Startups" | |
width={220} | |
height={64} | |
className="object-contain h-16 w-auto" | |
/> | |
</div> | |
</div> | |
</div> | |
</motion.header> | |
{/* Scroll Indicator Section */} | |
<motion.div | |
className="flex justify-center py-8" | |
initial={{ opacity: 0, y: -10 }} | |
animate={{ | |
opacity: [0, 1, 0], | |
y: [0, 10, 0] | |
}} | |
transition={{ | |
repeat: Infinity, | |
duration: 2, | |
ease: "easeInOut" | |
}} | |
> | |
<div className="flex flex-col items-center text-pink-600"> | |
<span className="text-sm font-medium mb-2">Scroll to explore</span> | |
<ChevronDown className="h-6 w-6 animate-bounce" /> | |
</div> | |
</motion.div> | |
{/* FAQ Section */} | |
<section className="py-12 sm:py-24 px-4"> | |
<motion.h2 | |
className="text-4xl font-bold text-[#DB2777] text-center mb-16" | |
> | |
Frequently Asked Questions | |
</motion.h2> | |
<div className="max-w-3xl mx-auto"> | |
{faqs.map((faq, index) => ( | |
<motion.div | |
key={index} | |
className="mb-6" | |
> | |
<button | |
className="w-full px-6 py-4 bg-white rounded-2xl flex items-center justify-between text-[#DB2777] hover:bg-pink-50/50 transition-all" | |
onClick={() => toggleFaq(index)} | |
> | |
<span className="text-xl font-medium text-left">{faq.question}</span> | |
{openFaqIndex === index ? ( | |
<Minus className="w-6 h-6 flex-shrink-0" /> | |
) : ( | |
<Plus className="w-6 h-6 flex-shrink-0" /> | |
)} | |
</button> | |
<AnimatePresence> | |
{openFaqIndex === index && ( | |
<motion.div | |
initial={{ height: 0, opacity: 0 }} | |
animate={{ height: "auto", opacity: 1 }} | |
exit={{ height: 0, opacity: 0 }} | |
transition={{ duration: 0.3 }} | |
className="overflow-hidden" | |
> | |
<div className="px-6 py-4 text-gray-600"> | |
<p className="text-lg">{faq.answer}</p> | |
</div> | |
</motion.div> | |
)} | |
</AnimatePresence> | |
</motion.div> | |
))} | |
</div> | |
</section> | |
{/* Footer CTA */} | |
<motion.footer | |
className="py-12 sm:py-24 text-center px-4" | |
> | |
<h2 className="text-4xl font-bold text-[#DB2777] mb-8"> | |
Ready to Get Started? | |
</h2> | |
<p className="text-xl text-[#6B7280] mb-12 max-w-2xl mx-auto"> | |
Join us in revolutionizing AI development with high-quality synthetic data | |
</p> | |
{/* Add social row above the main footer CTA */} | |
<div className="flex justify-center gap-6 mb-8"> | |
<Link | |
href="https://github.com/starfishdata/starfish" | |
target="_blank" | |
className="text-gray-400 hover:text-[#DB2777] transition-colors" | |
aria-label="GitHub" | |
> | |
<Github className="h-5 w-5" /> | |
</Link> | |
<Link | |
href="https://twitter.com/starfishdata" | |
target="_blank" | |
className="text-gray-400 hover:text-[#DB2777] transition-colors" | |
aria-label="Twitter" | |
> | |
<svg className="h-5 w-5" viewBox="0 0 24 24" fill="currentColor"> | |
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/> | |
</svg> | |
</Link> | |
<Link | |
href="https://discord.com/invite/qWKmeUtb" | |
target="_blank" | |
className="text-gray-400 hover:text-[#DB2777] transition-colors" | |
aria-label="Discord" | |
> | |
<svg className="h-5 w-5" viewBox="0 0 24 24" fill="currentColor"> | |
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z"/> | |
</svg> | |
</Link> | |
</div> | |
<Button | |
className="px-8 py-3 text-base font-medium rounded-lg bg-[#DB2777] hover:bg-[#BE185D] text-white transition-colors flex items-center justify-center mx-auto" | |
onClick={() => window.open('https://calendly.com/d/crsb-ckq-fv2/chat-with-starfishdata-team', '_blank')} | |
> | |
<Calendar className="mr-2 h-5 w-5" /> | |
Schedule a Call with Us | |
</Button> | |
</motion.footer> | |
</div> | |
) | |
} |