2025-04-17 14:26:41 +08:00
// Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
// SPDX-License-Identifier: MIT
2025-04-28 10:07:36 +08:00
import { GithubFilled , GithubOutlined } from "@ant-design/icons" ;
import {
2025-05-01 22:41:37 +08:00
Bike ,
2025-04-28 10:07:36 +08:00
Bird ,
Book ,
2025-05-01 22:41:37 +08:00
Bot ,
Building ,
2025-04-28 10:07:36 +08:00
Camera ,
ChevronRight ,
2025-05-01 22:41:37 +08:00
Film ,
Github ,
2025-04-28 10:07:36 +08:00
Globe ,
2025-05-01 22:41:37 +08:00
Ham ,
2025-04-28 10:07:36 +08:00
Home ,
Lightbulb ,
Microscope ,
Paintbrush ,
2025-05-01 22:41:37 +08:00
Pizza ,
2025-04-28 10:07:36 +08:00
Podcast ,
Usb ,
User ,
} from "lucide-react" ;
import Link from "next/link" ;
2025-04-17 12:02:23 +08:00
2025-04-28 10:07:36 +08:00
import { AuroraText } from "~/components/magicui/aurora-text" ;
import { BentoCard } from "~/components/magicui/bento-grid" ;
import { BentoGrid } from "~/components/magicui/bento-grid" ;
import { FlickeringGrid } from "~/components/magicui/flickering-grid" ;
import { Button } from "~/components/ui/button" ;
2025-04-29 14:13:39 +08:00
import { MultiAgentVisualization } from "./_components/multi-agent-visualization" ;
2025-04-28 17:32:13 +08:00
import { Ray } from "./_components/ray" ;
2025-04-17 12:02:23 +08:00
export default function HomePage() {
2025-04-28 10:07:36 +08:00
return (
2025-04-28 11:44:18 +08:00
< div className = "flex flex-col items-center" >
2025-04-28 10:07:36 +08:00
< Header / >
2025-04-28 11:37:46 +08:00
< main className = "container flex flex-col items-center justify-center gap-56" >
2025-04-28 10:07:36 +08:00
< Jumbotron / >
< CaseStudySection / >
2025-04-29 10:45:27 +08:00
< MultiAgentSection / >
2025-04-28 10:07:36 +08:00
< CoreFeatureSection / >
< JoinCommunitySection / >
< / main >
< Footer / >
2025-04-28 17:32:13 +08:00
< Ray / >
2025-04-28 10:07:36 +08:00
< / div >
) ;
}
function Header() {
return (
2025-04-28 11:37:46 +08:00
< header className = "supports-backdrop-blur:bg-background/80 bg-background/40 sticky top-0 left-0 z-40 flex h-15 w-full flex-col items-center backdrop-blur-lg" >
2025-04-29 11:43:39 +08:00
< div className = "container flex h-15 items-center justify-between px-3" >
2025-04-28 10:07:36 +08:00
< div className = "text-xl font-medium" >
2025-04-29 11:43:39 +08:00
< span className = "mr-1 text-2xl" > 🦌 < / span >
2025-04-28 10:07:36 +08:00
< span > DeerFlow < / span >
< / div >
< div className = "flex items-center gap-2" >
< Button variant = "outline" size = "sm" asChild >
< Link href = "https://github.com/bytedance/deer-flow" target = "_blank" >
< GithubOutlined / >
Star on GitHub
< / Link >
< / Button >
< / div >
< / div >
< hr className = "from-border/0 via-border/70 to-border/0 m-0 h-px w-full border-none bg-gradient-to-r" / >
< / header >
) ;
}
function Footer() {
return (
2025-04-28 11:37:46 +08:00
< footer className = "container mt-32 flex flex-col items-center justify-center" >
2025-04-28 10:07:36 +08:00
< hr className = "from-border/0 via-border/70 to-border/0 m-0 h-px w-full border-none bg-gradient-to-r" / >
< div className = "text-muted-foreground container flex h-20 flex-col items-center justify-center text-sm" >
2025-04-29 14:00:37 +08:00
< p className = "text-center font-serif text-lg md:text-xl" >
2025-04-28 10:07:36 +08:00
& quot ; Originated from Open Source , give back to Open Source . & quot ;
< / p >
< / div >
< div className = "text-muted-foreground container mb-8 flex flex-col items-center justify-center text-xs" >
< p > Licensed under MIT License < / p >
< p > & copy ; 2025 DeepFlow < / p >
< / div >
< / footer >
) ;
}
function SectionHeader ( {
title ,
description ,
} : {
title : React.ReactNode ;
description : React.ReactNode ;
} ) {
return (
< div className = "mb-12 flex flex-col items-center justify-center gap-2" >
2025-04-29 10:45:27 +08:00
< h2 className = "mb-4 bg-gradient-to-r from-white via-gray-200 to-gray-400 bg-clip-text text-center text-5xl font-bold text-transparent" >
2025-04-28 10:07:36 +08:00
{ title }
< / h2 >
< p className = "text-muted-foreground text-center text-xl" > { description } < / p >
< / div >
) ;
}
function Jumbotron() {
return (
2025-04-30 21:09:33 +08:00
< section className = "relative flex h-[95vh] w-full flex-col items-center justify-center pb-15" >
2025-04-28 10:07:36 +08:00
< FlickeringGrid
id = "deer-hero-bg"
className = { ` absolute inset-0 z-0 [mask-image:radial-gradient(800px_circle_at_center,white,transparent)] ` }
squareSize = { 4 }
gridGap = { 4 }
color = "#60A5FA"
2025-04-28 10:17:07 +08:00
maxOpacity = { 0.133 }
2025-04-28 10:07:36 +08:00
flickerChance = { 0.1 }
/ >
< FlickeringGrid
id = "deer-hero"
2025-04-30 21:09:33 +08:00
className = { ` absolute inset-0 z-0 mask-[url(/images/deer-hero.svg)] mask-size-[100vw] mask-center mask-no-repeat md:mask-size-[72vh] ` }
2025-04-28 10:07:36 +08:00
squareSize = { 3 }
gridGap = { 6 }
color = "#60A5FA"
2025-04-28 10:17:07 +08:00
maxOpacity = { 0.66 }
2025-04-28 10:07:36 +08:00
flickerChance = { 0.12 }
/ >
< div className = "relative z-10 flex flex-col items-center justify-center gap-12" >
2025-04-30 19:53:14 +08:00
< h1 className = "text-center text-4xl font-bold md:text-6xl" >
2025-04-28 10:07:36 +08:00
< span className = "bg-gradient-to-r from-white via-gray-200 to-gray-400 bg-clip-text text-transparent" >
Deep Research { " " }
< / span >
< AuroraText > at Your Fingertips < / AuroraText >
< / h1 >
2025-04-30 19:53:14 +08:00
< p className = "max-w-4xl p-2 text-center text-sm font-light opacity-80 md:text-2xl" >
Meet < span className = "font-medium" > DeerFlow < / span > , your ultimate Deep
Research assistant . With powerful tools like search engines , web
crawlers , Python and MCP services , it provides instant insights ,
comprehensive reports , or even captivating podcasts .
2025-04-28 10:07:36 +08:00
< / p >
< div className = "flex gap-6" >
2025-04-30 19:53:14 +08:00
< Button className = "hidden text-lg md:flex md:w-42" size = "lg" asChild >
2025-04-28 10:07:36 +08:00
< Link href = "/chat" >
Get Started < ChevronRight / >
< / Link >
< / Button >
< Button className = "w-42 text-lg" size = "lg" variant = "outline" asChild >
< Link href = "https://github.com/bytedance/deer-flow" target = "_blank" >
< GithubFilled / >
Learn More
< / Link >
< / Button >
< / div >
< / div >
2025-04-28 10:17:07 +08:00
< div className = "absolute bottom-8 flex text-xs opacity-50" >
2025-04-28 10:07:36 +08:00
< p > * DEER stands for Deep Exploration and Efficient Research . < / p >
< / div >
< / section >
) ;
}
const caseStudies = [
{
2025-05-01 22:41:37 +08:00
id : "eiffel-tower-vs-tallest-building" ,
icon : Building ,
title : "How tall is Eiffel Tower compared to tallest building?" ,
2025-04-28 10:07:36 +08:00
description :
2025-05-01 22:41:37 +08:00
"The research compares the heights and global significance of the Eiffel Tower and Burj Khalifa, and uses Python code to calculate the multiples." ,
2025-04-28 10:07:36 +08:00
} ,
{
2025-05-01 22:41:37 +08:00
id : "github-top-trending-repo" ,
icon : Github ,
title : "What are the top trending repositories on GitHub?" ,
2025-04-28 10:07:36 +08:00
description :
2025-05-01 22:41:37 +08:00
"The research utilized MCP services to identify the most popular GitHub repositories and documented them in detail using search engines." ,
2025-04-28 10:07:36 +08:00
} ,
{
2025-05-01 22:41:37 +08:00
id : "nanjing-traditional-food" ,
icon : Ham ,
title : "Write an article about Nanjing's traditional dishes" ,
2025-04-28 10:07:36 +08:00
description :
2025-05-01 22:41:37 +08:00
"The study vividly showcases Nanjing's famous dishes through rich content and imagery, uncovering their hidden histories and cultural significance." ,
2025-04-28 10:07:36 +08:00
} ,
{
2025-05-01 22:41:37 +08:00
id : "rental-apartment-decoration" ,
icon : Home ,
title : "How to decorate a small rental apartment?" ,
2025-04-28 10:07:36 +08:00
description :
2025-05-01 22:41:37 +08:00
"The study provides readers with practical and straightforward methods for decorating apartments, accompanied by inspiring images." ,
2025-04-28 10:07:36 +08:00
} ,
{
2025-05-01 22:41:37 +08:00
id : "review-of-the-professional" ,
icon : Film ,
title : "Introduce the movie 'Léon: The Professional'" ,
2025-04-28 10:07:36 +08:00
description :
2025-05-01 22:41:37 +08:00
"The research provides a comprehensive introduction to the movie 'Léon: The Professional', including its plot, characters, and themes." ,
2025-04-28 10:07:36 +08:00
} ,
{
2025-05-01 22:41:37 +08:00
id : "china-food-delivery" ,
icon : Bike ,
title : "How do you view the takeaway war in China? (in Chinese)" ,
2025-04-28 10:07:36 +08:00
description :
2025-05-01 22:41:37 +08:00
"The research analyzes the intensifying competition between JD and Meituan, highlighting their strategies, technological innovations, and challenges." ,
2025-04-28 10:07:36 +08:00
} ,
{
2025-05-01 22:41:37 +08:00
id : "ultra-processed-foods" ,
icon : Pizza ,
title : "Are ultra-processed foods linked to health?" ,
2025-04-28 10:07:36 +08:00
description :
2025-05-01 22:41:37 +08:00
"The research examines the health risks of rising ultra-processed food consumption, urging more research on long-term effects and individual differences." ,
2025-04-28 10:07:36 +08:00
} ,
{
2025-05-01 22:41:37 +08:00
id : "ai-twin-insurance" ,
icon : Bot ,
title : 'Write an article on "Would you insure your AI twin?"' ,
2025-04-28 10:07:36 +08:00
description :
2025-05-01 22:41:37 +08:00
"The research explores the concept of insuring AI twins, highlighting their benefits, risks, ethical considerations, and the evolving regulatory." ,
2025-04-28 10:07:36 +08:00
} ,
] ;
function CaseStudySection() {
return (
2025-04-30 19:53:14 +08:00
< section className = "relative container hidden flex-col items-center justify-center md:flex" >
2025-04-28 10:07:36 +08:00
< SectionHeader
title = "Case Studies"
description = "See DeerFlow in action through replays."
/ >
2025-04-29 14:00:37 +08:00
< div className = "grid w-3/4 grid-cols-1 gap-2 sm:w-full sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4" >
2025-04-28 10:07:36 +08:00
{ caseStudies . map ( ( caseStudy ) = > (
2025-04-29 14:00:37 +08:00
< div key = { caseStudy . title } className = "w-full p-2" >
2025-04-28 10:07:36 +08:00
< BentoCard
{ . . . {
Icon : caseStudy.icon ,
name : caseStudy.title ,
description : caseStudy.description ,
2025-05-01 22:41:37 +08:00
href : ` /chat?replay= ${ caseStudy . id } ` ,
cta : "Watch Replay" ,
2025-04-29 14:00:37 +08:00
className : "w-full h-full" ,
2025-04-28 10:07:36 +08:00
} }
/ >
< / div >
) ) }
< / div >
< / section >
) ;
}
2025-04-29 10:45:27 +08:00
function MultiAgentSection() {
return (
2025-04-29 14:13:39 +08:00
< section className = "relative flex w-full flex-col items-center justify-center" >
2025-04-29 10:45:27 +08:00
< SectionHeader
title = "Multi-Agent Architecture"
description = "Experience the agent teamwork with our Supervisor + Handoffs design pattern."
/ >
2025-04-29 14:13:39 +08:00
< div className = "flex h-[70vh] w-full flex-col items-center justify-center" >
< div className = "h-full w-full" >
< MultiAgentVisualization / >
< / div >
< / div >
2025-04-29 10:45:27 +08:00
< / section >
) ;
}
2025-04-28 10:07:36 +08:00
const features = [
{
Icon : Microscope ,
name : "Dive Deeper and Reach Wider" ,
description :
2025-04-29 10:45:27 +08:00
"Unlock deeper insights with advanced tools. Our powerful search + crawling and Python tools gathers comprehensive data, delivering in-depth reports to enhance your study." ,
2025-04-28 10:07:36 +08:00
href : "/" ,
cta : "Learn more" ,
background : (
< img alt = "background" className = "absolute -top-20 -right-20 opacity-60" / >
) ,
className : "lg:col-start-1 lg:col-end-2 lg:row-start-1 lg:row-end-3" ,
} ,
{
Icon : User ,
name : "Human-in-the-loop" ,
description :
"Refine your research plan, or adjust focus areas all through simple natural language." ,
href : "/" ,
cta : "Learn more" ,
background : (
< img alt = "background" className = "absolute -top-20 -right-20 opacity-60" / >
) ,
className : "lg:col-start-1 lg:col-end-2 lg:row-start-3 lg:row-end-4" ,
} ,
{
Icon : Bird ,
name : "Lang Stack" ,
description :
2025-04-28 17:01:07 +08:00
"Build with confidence using the LangChain and LangGraph frameworks." ,
2025-04-28 10:07:36 +08:00
href : "/" ,
cta : "Learn more" ,
background : (
< img alt = "background" className = "absolute -top-20 -right-20 opacity-60" / >
) ,
2025-04-29 11:08:54 +08:00
className : "lg:col-start-2 lg:col-end-3 lg:row-start-1 lg:row-end-2" ,
2025-04-28 10:07:36 +08:00
} ,
{
Icon : Usb ,
name : "MCP Integrations" ,
description :
"Supercharge your research workflow and expand your toolkit with seamless MCP integrations." ,
href : "/" ,
cta : "Learn more" ,
background : (
< img alt = "background" className = "absolute -top-20 -right-20 opacity-60" / >
) ,
2025-04-29 11:08:54 +08:00
className : "lg:col-start-2 lg:col-end-3 lg:row-start-2 lg:row-end-3" ,
2025-04-28 10:07:36 +08:00
} ,
{
Icon : Podcast ,
name : "Podcast Generation" ,
description :
2025-04-29 10:45:27 +08:00
"Instantly generate podcasts from reports. Perfect for on-the-go learning or sharing findings effortlessly. " ,
2025-04-28 10:07:36 +08:00
href : "/" ,
cta : "Learn more" ,
background : (
< img alt = "background" className = "absolute -top-20 -right-20 opacity-60" / >
) ,
2025-04-29 11:08:54 +08:00
className : "lg:col-start-2 lg:col-end-3 lg:row-start-3 lg:row-end-4" ,
2025-04-28 10:07:36 +08:00
} ,
] ;
function CoreFeatureSection() {
return (
2025-04-28 11:37:46 +08:00
< section className = "relative flex w-full flex-col content-around items-center justify-center" >
2025-04-28 10:07:36 +08:00
< SectionHeader
title = "Core Features"
description = "Find out what makes DeerFlow effective."
/ >
2025-04-29 11:08:54 +08:00
< BentoGrid className = "w-3/4 lg:grid-cols-2 lg:grid-rows-3" >
2025-04-28 10:07:36 +08:00
{ features . map ( ( feature ) = > (
< BentoCard key = { feature . name } { ...feature } / >
) ) }
< / BentoGrid >
< / section >
) ;
}
function JoinCommunitySection() {
return (
2025-04-28 11:37:46 +08:00
< section className = "flex w-full flex-col items-center justify-center pb-12" >
2025-04-28 10:07:36 +08:00
< SectionHeader
title = {
< AuroraText colors = { [ "#60A5FA" , "#A5FA60" , "#A560FA" ] } >
Join the DeerFlow Community
< / AuroraText >
}
description = "Contribute brilliant ideas to shape the future of DeerFlow. Collaborate, innovate, and make impacts."
/ >
< Button className = "text-xl" size = "lg" asChild >
< Link href = "https://github.com/bytedance/deer-flow" target = "_blank" >
< GithubFilled / >
Contribute Now
< / Link >
< / Button >
< / section >
) ;
2025-04-17 12:02:23 +08:00
}