From 411bbb00d1117bd62ca0ba460559cf399d91f2ec Mon Sep 17 00:00:00 2001
From: zguiyang
Date: Mon, 16 Mar 2026 16:18:28 +0800
Subject: [PATCH] feat(site): optimize full-stack positioning and collaboration
conversion pages
---
src/components/GlassHeader.tsx | 7 +-
src/i18n/translations.ts | 10 +-
src/lib/data/personal-info.ts | 8 +-
src/pages/about.astro | 97 ++++++++++++++----
src/pages/contact.astro | 17 ++++
src/pages/hire.astro | 177 ++++++++++++++++++++++++++++++++-
src/pages/index.astro | 39 ++++++--
src/pages/uses.astro | 39 +-------
src/pages/zh/about.astro | 97 ++++++++++++++----
src/pages/zh/contact.astro | 17 ++++
src/pages/zh/hire.astro | 177 ++++++++++++++++++++++++++++++++-
src/pages/zh/index.astro | 39 ++++++--
src/pages/zh/uses.astro | 39 +-------
13 files changed, 617 insertions(+), 146 deletions(-)
diff --git a/src/components/GlassHeader.tsx b/src/components/GlassHeader.tsx
index 7c17a5e..2697e09 100644
--- a/src/components/GlassHeader.tsx
+++ b/src/components/GlassHeader.tsx
@@ -5,7 +5,7 @@ import Container from "./ui/Container.tsx";
import { useTranslations, getLocalizedPath } from "@/i18n/utils";
import type { Lang } from "@/types/i18n";
import { useState, useEffect } from "react";
-import { Menu, X, Home, Rocket, PenTool, Zap, User, Wrench, Mail } from "lucide-react";
+import { Menu, X, Home, Rocket, PenTool, User, Briefcase, Mail } from "lucide-react";
import { defaultLang } from "@/i18n/ui";
import { type GlassHeaderProps } from "@/types";
import { motion } from "framer-motion";
@@ -40,11 +40,10 @@ export default function GlassHeader({ lang: propLang }: GlassHeaderProps) {
const navItems = [
{ key: 'nav.home', icon: Home, href: getLocalizedPath('/', lang) },
- { key: 'nav.about', icon: User, href: getLocalizedPath('/about', lang) },
{ key: 'nav.projects', icon: Rocket, href: getLocalizedPath('/projects', lang) },
{ key: 'nav.blog', icon: PenTool, href: getLocalizedPath('/blog', lang) },
- { key: 'nav.now', icon: Zap, href: getLocalizedPath('/now', lang) },
- { key: 'nav.uses', icon: Wrench, href: getLocalizedPath('/uses', lang) },
+ { key: 'nav.about', icon: User, href: getLocalizedPath('/about', lang) },
+ { key: 'nav.hire', icon: Briefcase, href: getLocalizedPath('/hire', lang) },
{ key: 'nav.contact', icon: Mail, href: getLocalizedPath('/contact', lang) },
];
diff --git a/src/i18n/translations.ts b/src/i18n/translations.ts
index b0b702e..c5e8c92 100644
--- a/src/i18n/translations.ts
+++ b/src/i18n/translations.ts
@@ -11,13 +11,14 @@ export const translations = {
about: 'About',
projects: 'Projects',
blog: 'Blog',
+ hire: 'Hire',
uses: 'Uses',
contact: 'Contact',
now: 'Now',
},
site: {
- title: 'Joey Zhao - Senior Frontend Engineer',
- description: 'Senior Frontend Engineer building complex systems and AI-assisted products',
+ title: 'Joey Zhao - Full-stack Engineer',
+ description: 'Full-stack Engineer for custom development, outsourcing projects, and reliable delivery',
},
hero: {
greeting: "Hello, I'm",
@@ -197,13 +198,14 @@ export const translations = {
about: '关于',
projects: '项目',
blog: '博客',
+ hire: '合作',
uses: '工具',
contact: '联系',
now: '现在',
},
site: {
- title: 'Joey Zhao - 资深前端工程师',
- description: '专注复杂系统与 AI 协作工程实践的资深前端工程师',
+ title: 'Joey Zhao - 全栈工程师',
+ description: '承接定制开发、项目外包与高质量交付的全栈工程师',
},
hero: {
greeting: '你好,我是',
diff --git a/src/lib/data/personal-info.ts b/src/lib/data/personal-info.ts
index 9e385d3..416bbbb 100644
--- a/src/lib/data/personal-info.ts
+++ b/src/lib/data/personal-info.ts
@@ -10,12 +10,12 @@ export const personalInfo: PersonalInfo = {
website: 'https://zhaoguiyang.com',
twitter: 'https://twitter.com/zhaoguiyang',
position: {
- en: 'Senior Frontend Engineer · Full-stack Developer',
- zh: '资深前端工程师 · 全栈开发者',
+ en: 'Full-stack Engineer',
+ zh: '全栈工程师',
},
description: {
- en: '8 years building enterprise systems, financial platforms, and blockchain infrastructure. Focused on frontend architecture, complex system design, and AI-assisted engineering workflows.',
- zh: '8 年企业系统、金融平台与区块链基础设施研发经验,专注前端架构、复杂系统设计与 AI 协作工程化实践。',
+ en: '8 years building enterprise systems, financial platforms, and blockchain infrastructure. Available for custom development, outsourcing projects, bug fixing, and long-term remote collaboration.',
+ zh: '8 年企业系统、金融平台与区块链基础设施研发经验,可承接定制开发、项目外包、Bug 修复与长期远程合作。',
},
about: {
en: [
diff --git a/src/pages/about.astro b/src/pages/about.astro
index d54b52a..0cb0ef8 100644
--- a/src/pages/about.astro
+++ b/src/pages/about.astro
@@ -3,12 +3,13 @@ import Layout from '@/layouts/Layout.astro';
import GlassHeader from '@/components/GlassHeader';
import Footer from '@/components/Footer';
import Container from '@/components/ui/Container.astro';
-import { personalInfo } from '@/lib/data';
+import { personalInfo, uses, contactMethods } from '@/lib/data';
import type { Lang } from '@/types/i18n';
import { defaultLang } from '@/i18n/ui';
const lang = (Astro.currentLocale as Lang) || defaultLang;
const isZh = lang === 'zh';
+const prefix = isZh ? '/zh' : '';
const focusAreas = isZh
? ['前端架构设计与模块治理', '大型企业应用工程化交付', '金融与区块链系统前端建设', 'AI 协作开发流程实践']
@@ -25,6 +26,10 @@ const experienceNotes = isZh
'Contributed to government- and fintech-related systems, including trading platforms, blockchain infrastructure, and industrial management systems.',
'Strong in cross-functional collaboration and remote async execution with long-term maintainability in mind.',
];
+
+const workStyle = isZh
+ ? ['远程优先、异步协作为主,关键节点同步决策', '强调可维护架构与稳定交付节奏', '文档化需求与边界,降低沟通与返工成本']
+ : ['Remote-first and async-friendly collaboration with sync checkpoints', 'Maintainable architecture and stable delivery cadence', 'Documented requirements and boundaries to reduce rework'];
---
@@ -32,37 +37,85 @@ const experienceNotes = isZh
-
+
+
+
{isZh ? '关于我' : 'About'}
{personalInfo.description[lang]}
-
-
- {isZh ? '背景' : 'Background'}
-
- {personalInfo.about[lang].map((line) =>
{line}
)}
-
-
-
-
- {isZh ? '技术焦点' : 'Technical Focus'}
-
- {focusAreas.map((item) => (
- - {item}
- ))}
-
-
-
-
-
+
{isZh ? '经验概览' : 'Experience'}
-
+
+ {personalInfo.about[lang].map((line) =>
{line}
)}
+
+
{experienceNotes.map((item) => (
- {item}
))}
+
+
+ {isZh ? '技术焦点' : 'Technical Focus'}
+
+ {focusAreas.map((item) => (
+ - {item}
+ ))}
+
+
+
+
+ {isZh ? '工具与工作流' : 'Uses'}
+
+ {uses.map((group) => (
+
+ {group.title[lang]}
+
+ {group.items.map((item) => - • {item}
)}
+
+
+ ))}
+
+
+
+
+ {isZh ? '工作方式' : 'Work Style'}
+
+ {workStyle.map((item) => (
+ - {item}
+ ))}
+
+
+
+
+ {isZh ? '联系(简版)' : 'Contact Brief'}
+ {isZh ? '优先沟通远程岗位机会,其次为项目合作咨询。' : 'Remote role opportunities are prioritized, followed by project collaboration.'}
+
+
+ {contactMethods.slice(0, 2).map((method) => (
+ -
+ {method.label[lang]}
+ {method.href ? (
+ {method.value}
+ ) : (
+ {method.value}
+ )}
+
+ ))}
+
+
+
+
diff --git a/src/pages/contact.astro b/src/pages/contact.astro
index ad30db4..b194149 100644
--- a/src/pages/contact.astro
+++ b/src/pages/contact.astro
@@ -23,6 +23,12 @@ const isZh = lang === 'zh';
? '欢迎联系我沟通远程岗位或项目合作。默认优先响应远程岗位机会。'
: 'Open to remote role opportunities and project collaboration. Remote role discussions are prioritized.'}
+
+ {isZh ? '想先了解合作方式与付款方式?请查看' : 'Want details on collaboration and payment terms first? Visit'}
+ {' '}
+ {isZh ? '合作页面' : 'Hire page'}
+ 。
+
@@ -55,6 +61,17 @@ const isZh = lang === 'zh';
: 'Suggestion: include role/project context, expected collaboration model, and timeline in your first message.'}
+
+
+ {isZh ? '需求信息模板' : 'Request Template'}
+
+ - 1. {isZh ? '你是谁 / 团队背景' : 'Who you are / team context'}
+ - 2. {isZh ? '项目目标与当前现状' : 'Project goal and current status'}
+ - 3. {isZh ? '期望上线时间与协作周期' : 'Target timeline and collaboration window'}
+ - 4. {isZh ? '预算区间或岗位信息' : 'Budget range or role details'}
+ - 5. {isZh ? '优先沟通方式(邮箱/即时通讯)' : 'Preferred communication channel (email/chat)'}
+
+
diff --git a/src/pages/hire.astro b/src/pages/hire.astro
index 06f4dd1..9a8431d 100644
--- a/src/pages/hire.astro
+++ b/src/pages/hire.astro
@@ -1,3 +1,178 @@
---
-return Astro.redirect('/contact', 301);
+import Layout from '@/layouts/Layout.astro';
+import GlassHeader from '@/components/GlassHeader';
+import Footer from '@/components/Footer';
+import Container from '@/components/ui/Container.astro';
+import type { Lang } from '@/types/i18n';
+import { defaultLang } from '@/i18n/ui';
+
+const lang = (Astro.currentLocale as Lang) || defaultLang;
+const isZh = lang === 'zh';
+
+const models = isZh
+ ? [
+ {
+ title: '远程岗位合作',
+ desc: '适合长期加入团队,以资深前端/全栈角色参与核心产品建设。',
+ },
+ {
+ title: '项目制交付',
+ desc: '适合目标明确的系统建设、重构与性能优化项目,按阶段交付。',
+ },
+ {
+ title: '技术咨询/顾问',
+ desc: '适合架构评审、工程治理、复杂问题诊断与实施建议。',
+ },
+ ]
+ : [
+ {
+ title: 'Remote Role',
+ desc: 'Long-term collaboration as a senior frontend/full-stack engineer on core products.',
+ },
+ {
+ title: 'Project Delivery',
+ desc: 'Milestone-based delivery for scoped system builds, refactors, and performance optimization.',
+ },
+ {
+ title: 'Technical Consulting',
+ desc: 'Architecture reviews, engineering governance, complex issue diagnosis, and execution guidance.',
+ },
+ ];
+
+const paymentOptions = isZh
+ ? ['里程碑付款(推荐)', '月度结算(长期合作)', '咨询按小时或按天计费']
+ : ['Milestone-based payments (recommended)', 'Monthly settlement (for long-term collaboration)', 'Hourly or daily consulting billing'];
+
+const startingPackages = isZh
+ ? [
+ 'Bug 修复:¥800 起(按问题复杂度评估)',
+ '小型定制页面/落地页:¥3000 起',
+ '后台模块开发:¥6000 起(按里程碑)',
+ ]
+ : [
+ 'Bug fixing: from $120 (scoped by issue complexity)',
+ 'Small custom page/landing page: from $450',
+ 'Admin module delivery: from $850 (milestone-based)',
+ ];
+
+const process = isZh
+ ? ['需求沟通与目标确认', '方案评估与范围定义', '里程碑排期与执行', '阶段验收与交付总结']
+ : ['Discovery and goal alignment', 'Solution assessment and scope definition', 'Milestone planning and execution', 'Stage acceptance and delivery summary'];
+
+const boundaries = isZh
+ ? [
+ '默认不承接违法或高风险灰色业务。',
+ '需求变更超出范围时,会先同步影响与补充报价。',
+ '交付文档、代码与协作记录会保持透明可追踪。',
+ ]
+ : [
+ 'No illegal or high-risk gray-area business engagements.',
+ 'Out-of-scope changes are assessed first with impact and updated pricing.',
+ 'Delivery docs, code, and collaboration records remain transparent and traceable.',
+ ];
+
+const faqItems = isZh
+ ? [
+ { q: '多久回复?', a: '默认 24 小时内给出初步回复,紧急问题可优先处理。' },
+ { q: '如何开始合作?', a: '先在联系页提交背景与目标,我会给出范围评估与合作建议。' },
+ { q: '需求变更多怎么办?', a: '超出原范围会先同步影响、排期和补充报价,再继续执行。' },
+ ]
+ : [
+ { q: 'Response time?', a: 'Initial response is usually within 24 hours, with priority handling for urgent issues.' },
+ { q: 'How do we start?', a: 'Submit your context and goals on the contact page, then I provide scope assessment and recommendations.' },
+ { q: 'What about scope changes?', a: 'Out-of-scope changes are reviewed with impact and revised pricing before execution.' },
+ ];
---
+
+
+
+
+
+
+
+ {isZh ? '合作方式' : 'Work With Me'}
+
+ {isZh
+ ? '这个页面用于明确合作方式、付款方式、交付流程与边界,方便你快速判断是否匹配。'
+ : 'This page outlines collaboration models, payment methods, delivery process, and boundaries to quickly assess fit.'}
+
+
+
+
+ {isZh ? '合作方式' : 'Collaboration Models'}
+
+ {models.map((model) => (
+
+ {model.title}
+ {model.desc}
+
+ ))}
+
+
+
+
+
+ {isZh ? '付款方式' : 'Payment Terms'}
+
+ {paymentOptions.map((item) => - • {item}
)}
+
+
+
+
+ {isZh ? '交付流程' : 'Delivery Process'}
+
+ {process.map((item) => - {item}
)}
+
+
+
+
+
+ {isZh ? '参考起步价' : 'Starting Packages'}
+
+ {startingPackages.map((item) => - • {item}
)}
+
+
+ {isZh ? '说明:最终报价会根据需求复杂度、时间窗口与交付范围确认。' : 'Note: final pricing depends on complexity, timeline, and agreed delivery scope.'}
+
+
+
+
+ {isZh ? '合作边界与说明' : 'Engagement Boundaries'}
+
+ {boundaries.map((item) => - • {item}
)}
+
+
+
+
+ {isZh ? '常见问题' : 'FAQ'}
+
+ {faqItems.map((item) => (
+
+ ))}
+
+
+
+
+ {isZh ? '下一步' : 'Next Step'}
+
+ {isZh
+ ? '如果你已经有明确岗位或项目需求,请进入联系页提交背景、目标、时间与预算信息。'
+ : 'If you already have a role or project in mind, continue to the contact page with context, goals, timeline, and budget.'}
+
+
+
+
+
+
+
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 792c9ca..51b9ccf 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -14,15 +14,27 @@ const prefix = isZh ? '/zh' : '';
const featuredProjects = projects[lang].filter((item) => item.featured).slice(0, 3);
const proofItems = isZh
- ? ['8 年 Web 开发经验', '企业级复杂系统交付', '金融与区块链基础设施', '远程协作与稳定交付']
- : ['8 years in web engineering', 'Enterprise-grade complex systems', 'Finance & blockchain infrastructure', 'Remote-first stable delivery'];
+ ? ['8 年全栈开发经验', '支持定制开发与项目外包', '可承接紧急 Bug 修复', '远程协作与稳定交付']
+ : ['8 years in full-stack engineering', 'Available for custom development and outsourcing', 'Open for urgent bug fixing', 'Remote-first stable delivery'];
const headline = isZh
- ? '资深前端工程师,构建复杂系统与 AI 协作产品'
- : 'Senior Frontend Engineer building complex systems and AI-assisted products';
+ ? '全栈工程师,专注复杂系统开发与高质量交付'
+ : 'Full-stack Engineer focused on complex system development and reliable delivery';
const intro = personalInfo.description[lang];
+const serviceItems = isZh
+ ? [
+ { title: '网站/系统定制开发', desc: '从需求梳理到上线交付,适合中小型业务系统与管理后台。' },
+ { title: '项目外包与模块开发', desc: '可按里程碑承接功能模块开发、重构与性能优化。' },
+ { title: 'Bug 修复与线上排障', desc: '支持紧急问题排查与修复,默认 24 小时内给出初步反馈。' },
+ ]
+ : [
+ { title: 'Custom Website/System Development', desc: 'From requirement definition to production delivery for business systems.' },
+ { title: 'Outsourcing & Module Delivery', desc: 'Milestone-based module development, refactoring, and performance optimization.' },
+ { title: 'Bug Fixing & Production Troubleshooting', desc: 'Support for urgent issues with initial response within 24 hours.' },
+ ];
+
const postModules = await import.meta.glob('./blog/posts/*.md', { eager: true });
const latestPosts = sortPostsByDate(
Object.values(postModules).map((post: any) => ({
@@ -45,8 +57,8 @@ const latestPosts = sortPostsByDate(
{intro}
@@ -56,6 +68,21 @@ const latestPosts = sortPostsByDate(
+
+
+
+ {serviceItems.map((item) => (
+
+ {item.title}
+ {item.desc}
+
+ ))}
+
+
+
{isZh ? '精选工程案例' : 'Selected Engineering Cases'}
diff --git a/src/pages/uses.astro b/src/pages/uses.astro
index bab7f6b..9b0ee51 100644
--- a/src/pages/uses.astro
+++ b/src/pages/uses.astro
@@ -1,40 +1,3 @@
---
-import Layout from '@/layouts/Layout.astro';
-import GlassHeader from '@/components/GlassHeader';
-import Footer from '@/components/Footer';
-import Container from '@/components/ui/Container.astro';
-import { uses } from '@/lib/data';
-import type { Lang } from '@/types/i18n';
-import { defaultLang } from '@/i18n/ui';
-
-const lang = (Astro.currentLocale as Lang) || defaultLang;
-const isZh = lang === 'zh';
+return Astro.redirect('/about#uses', 301);
---
-
-
-
-
-
-
-
- {isZh ? '工具与工作流' : 'Uses'}
-
- {isZh ? '我在日常研发中稳定使用的工具与协作方式。' : 'Tools and workflows I use for daily engineering work.'}
-
-
-
-
- {uses.map((group) => (
-
- {group.title[lang]}
-
- {group.items.map((item) => - • {item}
)}
-
-
- ))}
-
-
-
-
-
-
diff --git a/src/pages/zh/about.astro b/src/pages/zh/about.astro
index d54b52a..0cb0ef8 100644
--- a/src/pages/zh/about.astro
+++ b/src/pages/zh/about.astro
@@ -3,12 +3,13 @@ import Layout from '@/layouts/Layout.astro';
import GlassHeader from '@/components/GlassHeader';
import Footer from '@/components/Footer';
import Container from '@/components/ui/Container.astro';
-import { personalInfo } from '@/lib/data';
+import { personalInfo, uses, contactMethods } from '@/lib/data';
import type { Lang } from '@/types/i18n';
import { defaultLang } from '@/i18n/ui';
const lang = (Astro.currentLocale as Lang) || defaultLang;
const isZh = lang === 'zh';
+const prefix = isZh ? '/zh' : '';
const focusAreas = isZh
? ['前端架构设计与模块治理', '大型企业应用工程化交付', '金融与区块链系统前端建设', 'AI 协作开发流程实践']
@@ -25,6 +26,10 @@ const experienceNotes = isZh
'Contributed to government- and fintech-related systems, including trading platforms, blockchain infrastructure, and industrial management systems.',
'Strong in cross-functional collaboration and remote async execution with long-term maintainability in mind.',
];
+
+const workStyle = isZh
+ ? ['远程优先、异步协作为主,关键节点同步决策', '强调可维护架构与稳定交付节奏', '文档化需求与边界,降低沟通与返工成本']
+ : ['Remote-first and async-friendly collaboration with sync checkpoints', 'Maintainable architecture and stable delivery cadence', 'Documented requirements and boundaries to reduce rework'];
---
@@ -32,37 +37,85 @@ const experienceNotes = isZh
-
+
+
+
{isZh ? '关于我' : 'About'}
{personalInfo.description[lang]}
-
-
- {isZh ? '背景' : 'Background'}
-
- {personalInfo.about[lang].map((line) =>
{line}
)}
-
-
-
-
- {isZh ? '技术焦点' : 'Technical Focus'}
-
- {focusAreas.map((item) => (
- - {item}
- ))}
-
-
-
-
-
+
{isZh ? '经验概览' : 'Experience'}
-
+
+ {personalInfo.about[lang].map((line) =>
{line}
)}
+
+
{experienceNotes.map((item) => (
- {item}
))}
+
+
+ {isZh ? '技术焦点' : 'Technical Focus'}
+
+ {focusAreas.map((item) => (
+ - {item}
+ ))}
+
+
+
+
+ {isZh ? '工具与工作流' : 'Uses'}
+
+ {uses.map((group) => (
+
+ {group.title[lang]}
+
+ {group.items.map((item) => - • {item}
)}
+
+
+ ))}
+
+
+
+
+ {isZh ? '工作方式' : 'Work Style'}
+
+ {workStyle.map((item) => (
+ - {item}
+ ))}
+
+
+
+
+ {isZh ? '联系(简版)' : 'Contact Brief'}
+ {isZh ? '优先沟通远程岗位机会,其次为项目合作咨询。' : 'Remote role opportunities are prioritized, followed by project collaboration.'}
+
+
+ {contactMethods.slice(0, 2).map((method) => (
+ -
+ {method.label[lang]}
+ {method.href ? (
+ {method.value}
+ ) : (
+ {method.value}
+ )}
+
+ ))}
+
+
+
+
diff --git a/src/pages/zh/contact.astro b/src/pages/zh/contact.astro
index ad30db4..b194149 100644
--- a/src/pages/zh/contact.astro
+++ b/src/pages/zh/contact.astro
@@ -23,6 +23,12 @@ const isZh = lang === 'zh';
? '欢迎联系我沟通远程岗位或项目合作。默认优先响应远程岗位机会。'
: 'Open to remote role opportunities and project collaboration. Remote role discussions are prioritized.'}
+
+ {isZh ? '想先了解合作方式与付款方式?请查看' : 'Want details on collaboration and payment terms first? Visit'}
+ {' '}
+ {isZh ? '合作页面' : 'Hire page'}
+ 。
+
@@ -55,6 +61,17 @@ const isZh = lang === 'zh';
: 'Suggestion: include role/project context, expected collaboration model, and timeline in your first message.'}
+
+
+ {isZh ? '需求信息模板' : 'Request Template'}
+
+ - 1. {isZh ? '你是谁 / 团队背景' : 'Who you are / team context'}
+ - 2. {isZh ? '项目目标与当前现状' : 'Project goal and current status'}
+ - 3. {isZh ? '期望上线时间与协作周期' : 'Target timeline and collaboration window'}
+ - 4. {isZh ? '预算区间或岗位信息' : 'Budget range or role details'}
+ - 5. {isZh ? '优先沟通方式(邮箱/即时通讯)' : 'Preferred communication channel (email/chat)'}
+
+
diff --git a/src/pages/zh/hire.astro b/src/pages/zh/hire.astro
index 9f92570..9a8431d 100644
--- a/src/pages/zh/hire.astro
+++ b/src/pages/zh/hire.astro
@@ -1,3 +1,178 @@
---
-return Astro.redirect('/zh/contact', 301);
+import Layout from '@/layouts/Layout.astro';
+import GlassHeader from '@/components/GlassHeader';
+import Footer from '@/components/Footer';
+import Container from '@/components/ui/Container.astro';
+import type { Lang } from '@/types/i18n';
+import { defaultLang } from '@/i18n/ui';
+
+const lang = (Astro.currentLocale as Lang) || defaultLang;
+const isZh = lang === 'zh';
+
+const models = isZh
+ ? [
+ {
+ title: '远程岗位合作',
+ desc: '适合长期加入团队,以资深前端/全栈角色参与核心产品建设。',
+ },
+ {
+ title: '项目制交付',
+ desc: '适合目标明确的系统建设、重构与性能优化项目,按阶段交付。',
+ },
+ {
+ title: '技术咨询/顾问',
+ desc: '适合架构评审、工程治理、复杂问题诊断与实施建议。',
+ },
+ ]
+ : [
+ {
+ title: 'Remote Role',
+ desc: 'Long-term collaboration as a senior frontend/full-stack engineer on core products.',
+ },
+ {
+ title: 'Project Delivery',
+ desc: 'Milestone-based delivery for scoped system builds, refactors, and performance optimization.',
+ },
+ {
+ title: 'Technical Consulting',
+ desc: 'Architecture reviews, engineering governance, complex issue diagnosis, and execution guidance.',
+ },
+ ];
+
+const paymentOptions = isZh
+ ? ['里程碑付款(推荐)', '月度结算(长期合作)', '咨询按小时或按天计费']
+ : ['Milestone-based payments (recommended)', 'Monthly settlement (for long-term collaboration)', 'Hourly or daily consulting billing'];
+
+const startingPackages = isZh
+ ? [
+ 'Bug 修复:¥800 起(按问题复杂度评估)',
+ '小型定制页面/落地页:¥3000 起',
+ '后台模块开发:¥6000 起(按里程碑)',
+ ]
+ : [
+ 'Bug fixing: from $120 (scoped by issue complexity)',
+ 'Small custom page/landing page: from $450',
+ 'Admin module delivery: from $850 (milestone-based)',
+ ];
+
+const process = isZh
+ ? ['需求沟通与目标确认', '方案评估与范围定义', '里程碑排期与执行', '阶段验收与交付总结']
+ : ['Discovery and goal alignment', 'Solution assessment and scope definition', 'Milestone planning and execution', 'Stage acceptance and delivery summary'];
+
+const boundaries = isZh
+ ? [
+ '默认不承接违法或高风险灰色业务。',
+ '需求变更超出范围时,会先同步影响与补充报价。',
+ '交付文档、代码与协作记录会保持透明可追踪。',
+ ]
+ : [
+ 'No illegal or high-risk gray-area business engagements.',
+ 'Out-of-scope changes are assessed first with impact and updated pricing.',
+ 'Delivery docs, code, and collaboration records remain transparent and traceable.',
+ ];
+
+const faqItems = isZh
+ ? [
+ { q: '多久回复?', a: '默认 24 小时内给出初步回复,紧急问题可优先处理。' },
+ { q: '如何开始合作?', a: '先在联系页提交背景与目标,我会给出范围评估与合作建议。' },
+ { q: '需求变更多怎么办?', a: '超出原范围会先同步影响、排期和补充报价,再继续执行。' },
+ ]
+ : [
+ { q: 'Response time?', a: 'Initial response is usually within 24 hours, with priority handling for urgent issues.' },
+ { q: 'How do we start?', a: 'Submit your context and goals on the contact page, then I provide scope assessment and recommendations.' },
+ { q: 'What about scope changes?', a: 'Out-of-scope changes are reviewed with impact and revised pricing before execution.' },
+ ];
---
+
+
+
+
+
+
+
+ {isZh ? '合作方式' : 'Work With Me'}
+
+ {isZh
+ ? '这个页面用于明确合作方式、付款方式、交付流程与边界,方便你快速判断是否匹配。'
+ : 'This page outlines collaboration models, payment methods, delivery process, and boundaries to quickly assess fit.'}
+
+
+
+
+ {isZh ? '合作方式' : 'Collaboration Models'}
+
+ {models.map((model) => (
+
+ {model.title}
+ {model.desc}
+
+ ))}
+
+
+
+
+
+ {isZh ? '付款方式' : 'Payment Terms'}
+
+ {paymentOptions.map((item) => - • {item}
)}
+
+
+
+
+ {isZh ? '交付流程' : 'Delivery Process'}
+
+ {process.map((item) => - {item}
)}
+
+
+
+
+
+ {isZh ? '参考起步价' : 'Starting Packages'}
+
+ {startingPackages.map((item) => - • {item}
)}
+
+
+ {isZh ? '说明:最终报价会根据需求复杂度、时间窗口与交付范围确认。' : 'Note: final pricing depends on complexity, timeline, and agreed delivery scope.'}
+
+
+
+
+ {isZh ? '合作边界与说明' : 'Engagement Boundaries'}
+
+ {boundaries.map((item) => - • {item}
)}
+
+
+
+
+ {isZh ? '常见问题' : 'FAQ'}
+
+ {faqItems.map((item) => (
+
+ ))}
+
+
+
+
+ {isZh ? '下一步' : 'Next Step'}
+
+ {isZh
+ ? '如果你已经有明确岗位或项目需求,请进入联系页提交背景、目标、时间与预算信息。'
+ : 'If you already have a role or project in mind, continue to the contact page with context, goals, timeline, and budget.'}
+
+
+
+
+
+
+
+
diff --git a/src/pages/zh/index.astro b/src/pages/zh/index.astro
index 792c9ca..51b9ccf 100644
--- a/src/pages/zh/index.astro
+++ b/src/pages/zh/index.astro
@@ -14,15 +14,27 @@ const prefix = isZh ? '/zh' : '';
const featuredProjects = projects[lang].filter((item) => item.featured).slice(0, 3);
const proofItems = isZh
- ? ['8 年 Web 开发经验', '企业级复杂系统交付', '金融与区块链基础设施', '远程协作与稳定交付']
- : ['8 years in web engineering', 'Enterprise-grade complex systems', 'Finance & blockchain infrastructure', 'Remote-first stable delivery'];
+ ? ['8 年全栈开发经验', '支持定制开发与项目外包', '可承接紧急 Bug 修复', '远程协作与稳定交付']
+ : ['8 years in full-stack engineering', 'Available for custom development and outsourcing', 'Open for urgent bug fixing', 'Remote-first stable delivery'];
const headline = isZh
- ? '资深前端工程师,构建复杂系统与 AI 协作产品'
- : 'Senior Frontend Engineer building complex systems and AI-assisted products';
+ ? '全栈工程师,专注复杂系统开发与高质量交付'
+ : 'Full-stack Engineer focused on complex system development and reliable delivery';
const intro = personalInfo.description[lang];
+const serviceItems = isZh
+ ? [
+ { title: '网站/系统定制开发', desc: '从需求梳理到上线交付,适合中小型业务系统与管理后台。' },
+ { title: '项目外包与模块开发', desc: '可按里程碑承接功能模块开发、重构与性能优化。' },
+ { title: 'Bug 修复与线上排障', desc: '支持紧急问题排查与修复,默认 24 小时内给出初步反馈。' },
+ ]
+ : [
+ { title: 'Custom Website/System Development', desc: 'From requirement definition to production delivery for business systems.' },
+ { title: 'Outsourcing & Module Delivery', desc: 'Milestone-based module development, refactoring, and performance optimization.' },
+ { title: 'Bug Fixing & Production Troubleshooting', desc: 'Support for urgent issues with initial response within 24 hours.' },
+ ];
+
const postModules = await import.meta.glob('./blog/posts/*.md', { eager: true });
const latestPosts = sortPostsByDate(
Object.values(postModules).map((post: any) => ({
@@ -45,8 +57,8 @@ const latestPosts = sortPostsByDate(
{intro}
@@ -56,6 +68,21 @@ const latestPosts = sortPostsByDate(
+
+
+
+ {serviceItems.map((item) => (
+
+ {item.title}
+ {item.desc}
+
+ ))}
+
+
+
{isZh ? '精选工程案例' : 'Selected Engineering Cases'}
diff --git a/src/pages/zh/uses.astro b/src/pages/zh/uses.astro
index bab7f6b..87501df 100644
--- a/src/pages/zh/uses.astro
+++ b/src/pages/zh/uses.astro
@@ -1,40 +1,3 @@
---
-import Layout from '@/layouts/Layout.astro';
-import GlassHeader from '@/components/GlassHeader';
-import Footer from '@/components/Footer';
-import Container from '@/components/ui/Container.astro';
-import { uses } from '@/lib/data';
-import type { Lang } from '@/types/i18n';
-import { defaultLang } from '@/i18n/ui';
-
-const lang = (Astro.currentLocale as Lang) || defaultLang;
-const isZh = lang === 'zh';
+return Astro.redirect('/zh/about#uses', 301);
---
-
-
-
-
-
-
-
- {isZh ? '工具与工作流' : 'Uses'}
-
- {isZh ? '我在日常研发中稳定使用的工具与协作方式。' : 'Tools and workflows I use for daily engineering work.'}
-
-
-
-
- {uses.map((group) => (
-
- {group.title[lang]}
-
- {group.items.map((item) => - • {item}
)}
-
-
- ))}
-
-
-
-
-
-