"use client"; import Link from "next/link"; import { motion, useReducedMotion } from "motion/react"; import { ArrowUpRight, Bot, Braces, Database, GitBranch, LifeBuoy, Mail, Sparkles, TerminalSquare, } from "lucide-react"; const navItems = [ { label: "技术文章", href: "#articles" }, { label: "日常分享", href: "#life" }, { label: "联系我", href: "mailto:3505891631@qq.com" }, { label: "Gitea", href: "http://124.221.147.173:3000/fly/fly-personal-site" }, ]; const portals = [ { title: "技术文章", href: "#articles", eyebrow: "Knowledge archive", description: "围绕前端工程、服务端基础和 AI Agent 的技术内容索引。", icon: TerminalSquare, gradient: "from-cyan-300 via-blue-500 to-violet-500", }, { title: "日常分享", href: "#life", eyebrow: "Life stream", description: "记录工具使用、阶段复盘、生活观察和那些亲自走过的经验。", icon: LifeBuoy, gradient: "from-lime-300 via-emerald-400 to-cyan-400", }, ]; const noteModules = [ { name: "前端", href: "/notes/frontend", icon: Braces, description: "React、Vue、Next.js、CSS、动画、工程化。", }, { name: "后端", href: "/notes/backend", icon: Database, description: "API、数据库、部署、鉴权、缓存、服务基础。", }, { name: "AI Agent", href: "/notes/ai-agent", icon: Bot, description: "Agent 工作流、工具调用、提示词和自动化实践。", }, ]; const lifeTopics = ["Daily", "Reading", "Music", "Photo", "Travel", "Thoughts"]; export function HomePage() { const reduceMotion = useReducedMotion(); const distance = reduceMotion ? 0 : 28; const duration = reduceMotion ? 0 : 0.58; const easeOut = [0.22, 1, 0.36, 1] as const; const container = { hidden: {}, show: { transition: { staggerChildren: reduceMotion ? 0 : 0.075, delayChildren: reduceMotion ? 0 : 0.08, }, }, }; const reveal = { hidden: { opacity: 0, y: distance, filter: reduceMotion ? "none" : "blur(10px)" }, show: { opacity: 1, y: 0, filter: "blur(0px)", transition: { duration, ease: easeOut } }, }; const scaleReveal = { hidden: { opacity: 0, y: distance, scale: reduceMotion ? 1 : 0.96 }, show: { opacity: 1, y: 0, scale: 1, transition: { duration, ease: easeOut } }, }; return (
fly
frontend engineer / web experience / creative code fly 我是 fly,前端开发工程师。专注现代 Web 界面、工程化体验和 AI Agent 方向的探索。 进入内容矩阵 Gitea 仓库 3505891631@qq.com {portals.map((portal, index) => { const Icon = portal.icon; return (

0{index + 1} / {portal.eyebrow}

{portal.title}

{portal.description}

); })}
technical archive 技术文章 以「前端」为主线,同时延展到后端基础和 AI Agent。这里展示我的技术内容入口、实践路径和能力边界。
{noteModules.map((module) => { const Icon = module.icon; return (

{module.name}

{module.description}

打开模块
); })}
life channel 日常分享 记录真实经历里的小路标:工具使用、阶段复盘、生活观察,以及一些值得回头看的想法。 {lifeTopics.map((topic) => ( {topic} ))}

© 2026 fly. Built with Next.js, Tailwind CSS and Motion.

Gitea repository
); }