feat(content): update portfolio profile copy
This commit is contained in:
@@ -45,7 +45,7 @@ export const metadata: Metadata = {
|
|||||||
description: DATA.description,
|
description: DATA.description,
|
||||||
url: DATA.url,
|
url: DATA.url,
|
||||||
siteName: `${DATA.name}`,
|
siteName: `${DATA.name}`,
|
||||||
locale: "en_US",
|
locale: "zh_CN",
|
||||||
type: "website",
|
type: "website",
|
||||||
},
|
},
|
||||||
robots: {
|
robots: {
|
||||||
@@ -75,7 +75,7 @@ export default function RootLayout({
|
|||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
}>) {
|
}>) {
|
||||||
return (
|
return (
|
||||||
<html lang="en" suppressHydrationWarning>
|
<html lang="zh-CN" suppressHydrationWarning>
|
||||||
<Script
|
<Script
|
||||||
defer
|
defer
|
||||||
src="https://analytics.liukersun.com/script.js"
|
src="https://analytics.liukersun.com/script.js"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ export default function Page() {
|
|||||||
delay={BLUR_FADE_DELAY}
|
delay={BLUR_FADE_DELAY}
|
||||||
className="text-3xl font-semibold tracking-tighter sm:text-4xl lg:text-5xl"
|
className="text-3xl font-semibold tracking-tighter sm:text-4xl lg:text-5xl"
|
||||||
yOffset={8}
|
yOffset={8}
|
||||||
text={`Hi, I'm ${DATA.name.split(" ")[0]}👋`}
|
text={`你好,我是 ${DATA.name.split(" ")[0]} 👋`}
|
||||||
/>
|
/>
|
||||||
<BlurFadeText
|
<BlurFadeText
|
||||||
className="text-muted-foreground max-w-[600px] md:text-lg lg:text-xl"
|
className="text-muted-foreground max-w-[600px] md:text-lg lg:text-xl"
|
||||||
@@ -43,7 +43,7 @@ export default function Page() {
|
|||||||
<section id="about">
|
<section id="about">
|
||||||
<div className="flex min-h-0 flex-col gap-y-4">
|
<div className="flex min-h-0 flex-col gap-y-4">
|
||||||
<BlurFade delay={BLUR_FADE_DELAY * 3}>
|
<BlurFade delay={BLUR_FADE_DELAY * 3}>
|
||||||
<h2 className="text-xl font-bold">关于我</h2>
|
<h2 className="text-xl font-bold">个人简介</h2>
|
||||||
</BlurFade>
|
</BlurFade>
|
||||||
<BlurFade delay={BLUR_FADE_DELAY * 4}>
|
<BlurFade delay={BLUR_FADE_DELAY * 4}>
|
||||||
<div className="prose max-w-full text-pretty font-sans leading-relaxed text-muted-foreground dark:prose-invert">
|
<div className="prose max-w-full text-pretty font-sans leading-relaxed text-muted-foreground dark:prose-invert">
|
||||||
@@ -57,7 +57,7 @@ export default function Page() {
|
|||||||
<section id="work">
|
<section id="work">
|
||||||
<div className="flex min-h-0 flex-col gap-y-6">
|
<div className="flex min-h-0 flex-col gap-y-6">
|
||||||
<BlurFade delay={BLUR_FADE_DELAY * 5}>
|
<BlurFade delay={BLUR_FADE_DELAY * 5}>
|
||||||
<h2 className="text-xl font-bold">Work Experience</h2>
|
<h2 className="text-xl font-bold">工作经历</h2>
|
||||||
</BlurFade>
|
</BlurFade>
|
||||||
<BlurFade delay={BLUR_FADE_DELAY * 6}>
|
<BlurFade delay={BLUR_FADE_DELAY * 6}>
|
||||||
<WorkSection />
|
<WorkSection />
|
||||||
@@ -67,7 +67,7 @@ export default function Page() {
|
|||||||
<section id="education">
|
<section id="education">
|
||||||
<div className="flex min-h-0 flex-col gap-y-6">
|
<div className="flex min-h-0 flex-col gap-y-6">
|
||||||
<BlurFade delay={BLUR_FADE_DELAY * 7}>
|
<BlurFade delay={BLUR_FADE_DELAY * 7}>
|
||||||
<h2 className="text-xl font-bold">Education</h2>
|
<h2 className="text-xl font-bold">教育经历</h2>
|
||||||
</BlurFade>
|
</BlurFade>
|
||||||
<div className="flex flex-col gap-8">
|
<div className="flex flex-col gap-8">
|
||||||
{DATA.education.map((education, index) => (
|
{DATA.education.map((education, index) => (
|
||||||
@@ -115,7 +115,7 @@ export default function Page() {
|
|||||||
<section id="skills">
|
<section id="skills">
|
||||||
<div className="flex min-h-0 flex-col gap-y-4">
|
<div className="flex min-h-0 flex-col gap-y-4">
|
||||||
<BlurFade delay={BLUR_FADE_DELAY * 9}>
|
<BlurFade delay={BLUR_FADE_DELAY * 9}>
|
||||||
<h2 className="text-xl font-bold">Skills</h2>
|
<h2 className="text-xl font-bold">技能栈</h2>
|
||||||
</BlurFade>
|
</BlurFade>
|
||||||
<div className="flex flex-wrap gap-2">
|
<div className="flex flex-wrap gap-2">
|
||||||
{DATA.skills.map((skill, id) => (
|
{DATA.skills.map((skill, id) => (
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ export default function ContactSection() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="relative flex flex-col items-center gap-4 text-center">
|
<div className="relative flex flex-col items-center gap-4 text-center">
|
||||||
<h2 className="text-3xl font-bold tracking-tighter sm:text-5xl">
|
<h2 className="text-3xl font-bold tracking-tighter sm:text-5xl">
|
||||||
Get in Touch
|
联系我
|
||||||
</h2>
|
</h2>
|
||||||
<p className="mx-auto max-w-lg text-muted-foreground text-balance">
|
<p className="mx-auto max-w-lg text-muted-foreground text-balance">
|
||||||
想要交流?可以通过{" "}
|
如果你想聊项目合作、AI 应用、自动化工具,或者单纯交流技术,可以通过{" "}
|
||||||
<Link
|
<Link
|
||||||
href={DATA.contact.social.Telegram.url}
|
href={DATA.contact.social.Telegram.url}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@@ -46,4 +46,3 @@ export default function ContactSection() {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export default function ProjectsSection() {
|
|||||||
|
|
||||||
/>
|
/>
|
||||||
<div className="border bg-primary z-10 rounded-xl px-4 py-1">
|
<div className="border bg-primary z-10 rounded-xl px-4 py-1">
|
||||||
<span className="text-background text-sm font-medium">了解我</span>
|
<span className="text-background text-sm font-medium">代表项目</span>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
className="flex-1 h-px bg-linear-to-l from-transparent from-5% via-border via-95% to-transparent"
|
className="flex-1 h-px bg-linear-to-l from-transparent from-5% via-border via-95% to-transparent"
|
||||||
@@ -23,7 +23,7 @@ export default function ProjectsSection() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-y-3 items-center justify-center">
|
<div className="flex flex-col gap-y-3 items-center justify-center">
|
||||||
<h2 className="text-3xl font-bold tracking-tighter sm:text-4xl">你可以在这里看到我的动态</h2>
|
<h2 className="text-3xl font-bold tracking-tighter sm:text-4xl">这里是我近期最有代表性的工程实践</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="grid grid-cols-1 gap-3 sm:grid-cols-2 max-w-[800px] mx-auto auto-rows-fr">
|
<div className="grid grid-cols-1 gap-3 sm:grid-cols-2 max-w-[800px] mx-auto auto-rows-fr">
|
||||||
@@ -51,4 +51,3 @@ export default function ProjectsSection() {
|
|||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,32 +18,30 @@ export const DATA = {
|
|||||||
name: "Evan",
|
name: "Evan",
|
||||||
initials: "ES",
|
initials: "ES",
|
||||||
url: "https://liukersun.com",
|
url: "https://liukersun.com",
|
||||||
location: "China",
|
location: "中国",
|
||||||
locationLink: "https://www.google.com/maps/place/china",
|
locationLink: "https://www.google.com/maps/place/china",
|
||||||
description:
|
description:
|
||||||
"全栈软件工程师,6年开发经验。热爱技术,活跃于Telegram。",
|
"全栈软件工程师,专注 AI 应用、Go/Python 后端、自动化工具与平台化运维。",
|
||||||
summary:
|
summary:
|
||||||
"拥有6年软件开发经验的全栈工程师,曾就职于字节跳动 RTC 实验室、亚厦集团和 MakeBlock。擅长前后端开发、自动化测试、数据处理和办公自动化,做过C#项目与Swift iOS应用,精通Linux。",
|
"拥有 6 年软件开发经验,长期交付从前端界面、后端服务到部署运维的完整系统。\n\n最近几年的工作重点集中在 **AI 应用工程化**、**自动化工具**、**平台与网关能力建设**、**量化交易相关服务**。我更擅长把分散的技术组件组合成真正可运行的产品,而不是停留在单点功能实现。\n\n日常技术栈覆盖 React / Next.js、Go、Python、PostgreSQL、Docker、Linux,也持续在做 CLI 工具、数据处理、业务自动化和自托管基础设施相关项目。",
|
||||||
avatarUrl: "/me.png",
|
avatarUrl: "/me.png",
|
||||||
skills: [
|
skills: [
|
||||||
{ name: "Python", icon: Python },
|
{ name: "TypeScript", icon: Typescript },
|
||||||
|
{ name: "React", icon: ReactLight },
|
||||||
{ name: "Go", icon: Golang },
|
{ name: "Go", icon: Golang },
|
||||||
|
{ name: "Python", icon: Python },
|
||||||
|
{ name: "Node.js", icon: Nodejs },
|
||||||
|
{ name: "Docker", icon: Docker },
|
||||||
|
{ name: "PostgreSQL", icon: Postgresql },
|
||||||
|
{ name: "Linux", icon: Linux },
|
||||||
{ name: "Java", icon: Java },
|
{ name: "Java", icon: Java },
|
||||||
{ name: "C#", icon: Csharp },
|
{ name: "C#", icon: Csharp },
|
||||||
{ name: "React", icon: ReactLight },
|
|
||||||
{ name: "JavaScript", icon: Typescript },
|
|
||||||
{ name: "Swift", icon: Swift },
|
{ name: "Swift", icon: Swift },
|
||||||
{ name: "iOS", icon: Ios },
|
{ name: "iOS", icon: Ios },
|
||||||
{ name: "PostgreSQL", icon: Postgresql },
|
|
||||||
{ name: "Redis", icon: Csharp },
|
|
||||||
{ name: "Linux", icon: Linux },
|
|
||||||
{ name: "办公自动化", icon: Office },
|
{ name: "办公自动化", icon: Office },
|
||||||
{ name: "Nginx", icon: Nodejs },
|
|
||||||
{ name: "Docker", icon: Docker },
|
|
||||||
{ name: "Jenkins", icon: Golang },
|
|
||||||
],
|
],
|
||||||
navbar: [
|
navbar: [
|
||||||
{ href: "/", icon: HomeIcon, label: "Home" },
|
{ href: "/", icon: HomeIcon, label: "首页" },
|
||||||
],
|
],
|
||||||
contact: {
|
contact: {
|
||||||
email: "liukersun@gmail.com",
|
email: "liukersun@gmail.com",
|
||||||
@@ -57,7 +55,7 @@ export const DATA = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
Blog: {
|
Blog: {
|
||||||
name: "Blog",
|
name: "博客",
|
||||||
url: "https://blog.liukersun.com",
|
url: "https://blog.liukersun.com",
|
||||||
icon: Icons.Blog,
|
icon: Icons.Blog,
|
||||||
|
|
||||||
@@ -71,7 +69,7 @@ export const DATA = {
|
|||||||
navbar: true,
|
navbar: true,
|
||||||
},
|
},
|
||||||
email: {
|
email: {
|
||||||
name: "Send Email",
|
name: "邮箱",
|
||||||
url: "mailto:liukersun@gmail.com",
|
url: "mailto:liukersun@gmail.com",
|
||||||
icon: Icons.email,
|
icon: Icons.email,
|
||||||
|
|
||||||
@@ -91,7 +89,7 @@ export const DATA = {
|
|||||||
start: "2023",
|
start: "2023",
|
||||||
end: "2025",
|
end: "2025",
|
||||||
description:
|
description:
|
||||||
"负责全栈开发工作,内部质检系统功能编写。参与训练AI模型识别产品状况,优化流水线效率。",
|
"负责内部质检与业务系统的全栈开发,覆盖前端页面、后端接口、数据流转与部署协作。参与 AI 识别相关流程接入,用工程化手段提升产线质检效率与可追踪性。",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
company: "哈尔滨工业大学重庆研究院",
|
company: "哈尔滨工业大学重庆研究院",
|
||||||
@@ -103,7 +101,7 @@ export const DATA = {
|
|||||||
start: "2023",
|
start: "2023",
|
||||||
end: "2023",
|
end: "2023",
|
||||||
description:
|
description:
|
||||||
"担任项目经理和技术负责人,负责项目整体技术方向和架构设计。管理项目进度和团队协作,确保项目按时高质量交付。参与多个科研项目的技术选型和实施。",
|
"担任项目经理与技术负责人,负责项目技术路线、架构设计、任务拆解与交付推进。需要同时处理研发协同、需求落地和质量把控,偏向工程与管理双角色。",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
company: "字节跳动",
|
company: "字节跳动",
|
||||||
@@ -115,10 +113,10 @@ export const DATA = {
|
|||||||
start: "2021",
|
start: "2021",
|
||||||
end: "2023",
|
end: "2023",
|
||||||
description:
|
description:
|
||||||
"在 RTC 实验室负责音视频质量评估和弱网自动化测试。开发自动化测试工具和框架,提升测试效率。参与音视频通话质量优化,保障产品稳定性。使用 Python、Java 进行测试工具开发。",
|
"在 RTC 实验室负责音视频质量评估与弱网自动化测试,开发测试工具、数据分析脚本和效率平台,持续提升测试覆盖率与执行效率,支撑音视频通话质量优化和稳定性保障。",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
company: "夏厦集团",
|
company: "亚厦集团",
|
||||||
href: "#",
|
href: "#",
|
||||||
badges: [],
|
badges: [],
|
||||||
location: "中国",
|
location: "中国",
|
||||||
@@ -127,7 +125,7 @@ export const DATA = {
|
|||||||
start: "2020",
|
start: "2020",
|
||||||
end: "2021",
|
end: "2021",
|
||||||
description:
|
description:
|
||||||
"负责外立面 3D 建模,使用 Rhino、CAD、GrassHopper 等专业软件。开发 Python/Java/VBA 自动化工具,提升建模和数据处理效率。参与多个大型项目的 BIM 建模和优化工作。",
|
"负责外立面 3D 建模与 BIM 相关工作,使用 Rhino、CAD、Grasshopper 等专业工具。围绕建模和数据处理开发 Python / Java / VBA 自动化脚本,提升重复性工作的处理效率。",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
education: [
|
education: [
|
||||||
@@ -142,45 +140,83 @@ export const DATA = {
|
|||||||
],
|
],
|
||||||
projects: [
|
projects: [
|
||||||
{
|
{
|
||||||
title: "个人博客",
|
title: "OpenManage",
|
||||||
href: "https://blog.liukersun.com",
|
href: "https://github.com/LiukerSun/openmanage",
|
||||||
dates: "2018 - 至今",
|
dates: "2026",
|
||||||
active: true,
|
active: true,
|
||||||
description:
|
description:
|
||||||
"个人技术博客,分享软件开发经验、技术学习笔记和项目实践。涵盖前端、后端、自动化测试等多个技术领域。",
|
"面向 AI Agent 社交网络的管理平台,支持批量创建 Agent、容器生命周期管理、模板配置、日志查看,以及通过 SSE / WebSocket 实时反馈运行状态。",
|
||||||
technologies: [
|
technologies: [
|
||||||
"Blog",
|
"Next.js",
|
||||||
"技术分享",
|
"Go",
|
||||||
"开发经验",
|
"Docker",
|
||||||
|
"JWT",
|
||||||
|
"SSE",
|
||||||
],
|
],
|
||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
type: "Website",
|
type: "GitHub",
|
||||||
href: "https://blog.liukersun.com",
|
href: "https://github.com/LiukerSun/openmanage",
|
||||||
icon: <Icons.globe className="size-3" />,
|
icon: <Icons.github className="size-3" />,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
image: "./base.png",
|
||||||
|
video: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Agent Dispatcher",
|
||||||
|
href: "https://github.com/LiukerSun/agentdispatcher",
|
||||||
|
dates: "2026",
|
||||||
|
active: true,
|
||||||
|
description:
|
||||||
|
"多 Agent 协作的 GitOps 调度系统骨架,串联 Telegram、GitHub Flow、Jenkins 和调度服务,重点处理批量执行、分支编排、通知汇总与可扩展的服务边界。",
|
||||||
|
technologies: ["Go", "GitOps", "Telegram", "Jenkins", "Scheduler"],
|
||||||
|
links: [
|
||||||
|
{
|
||||||
|
type: "GitHub",
|
||||||
|
href: "https://github.com/LiukerSun/agentdispatcher",
|
||||||
|
icon: <Icons.github className="size-3" />,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
image: "./arch.png",
|
image: "./arch.png",
|
||||||
video: "",
|
video: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "github",
|
title: "cc-cli",
|
||||||
href: "https://github.com/LiukerSun",
|
href: "https://github.com/LiukerSun/cc-cli",
|
||||||
dates: "2018 - 至今",
|
dates: "2026",
|
||||||
active: true,
|
active: true,
|
||||||
description: "个人github仓库,记录个人项目和学习代码。",
|
description:
|
||||||
technologies: ["github", "项目管理", "学习代码"],
|
"给 Claude / Codex 使用的命令行配置切换器,用来统一管理不同站点、模型和凭证,解决多套 API 配置切换成本高的问题。",
|
||||||
|
technologies: ["Go", "CLI", "Developer Experience", "AI Tooling"],
|
||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
type: "Website",
|
type: "GitHub",
|
||||||
href: "https://github.com/LiukerSun",
|
href: "https://github.com/LiukerSun/cc-cli",
|
||||||
icon: <Icons.github className="size-3" />,
|
icon: <Icons.github className="size-3" />,
|
||||||
image: "./github.png",
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
image: "./github.png",
|
image: "./github.png",
|
||||||
video: "",
|
video: "",
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
title: "Excel JSON Service",
|
||||||
|
href: "https://github.com/LiukerSun/excel-json-tool",
|
||||||
|
dates: "2026",
|
||||||
|
active: true,
|
||||||
|
description:
|
||||||
|
"Excel 与 JSON 的双向转换服务,重点保留合并单元格、公式、数据验证、注释和命名区域,适合做结构化数据迁移与自动化处理。",
|
||||||
|
technologies: ["Python", "Excel", "JSON", "Web UI", "Automation"],
|
||||||
|
links: [
|
||||||
|
{
|
||||||
|
type: "GitHub",
|
||||||
|
href: "https://github.com/LiukerSun/excel-json-tool",
|
||||||
|
icon: <Icons.github className="size-3" />,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
image: "./base.png",
|
||||||
|
video: "",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
hackathons: [
|
hackathons: [
|
||||||
// 如果有参加过的技术活动、黑客马拉松或竞赛,可以在这里添加
|
// 如果有参加过的技术活动、黑客马拉松或竞赛,可以在这里添加
|
||||||
|
|||||||
Reference in New Issue
Block a user