refactor(profile): centralize personal info in data module and update components

Move all personal information to a centralized data module and update components to use this source. This improves maintainability by having a single source of truth for profile data and makes it easier to update information across the application.
This commit is contained in:
joyzhao
2025-06-19 11:00:39 +08:00
parent 5b6b9f5d58
commit 62df420d80
4 changed files with 77 additions and 47 deletions

View File

@@ -35,17 +35,17 @@ const pageTitle = t('site.title');
<!-- Main title -->
<h1 class="text-6xl md:text-8xl font-bold mb-6 bg-gradient-to-r from-gray-900 via-purple-600 to-purple-800 dark:from-white dark:via-purple-200 dark:to-purple-300 bg-clip-text text-transparent">
Joy Zhao
{personalInfo.name}
</h1>
<!-- Subtitle -->
<p class="text-2xl md:text-3xl text-muted-foreground mb-8 font-light">
Full Stack Engineer 👨‍💻
{personalInfo.position.en} 👨‍💻
</p>
<!-- Description -->
<p class="text-lg text-muted-foreground max-w-3xl mx-auto mb-12 leading-relaxed">
Crafting elegant solutions to complex problems with clean code and innovative thinking. Welcome to my personal dev workspace where ideas come to life.
{personalInfo.description.en}
</p>
<!-- Action buttons -->
@@ -61,7 +61,7 @@ const pageTitle = t('site.title');
</a>
<a
href="mailto:rkesh2003@gmail.com"
href={`mailto:${personalInfo.email}`}
class="border border-purple-500 text-purple-500 hover:bg-purple-500 hover:text-white px-8 py-3 rounded-lg font-semibold transition-colors flex items-center gap-2"
>
<svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
@@ -118,7 +118,7 @@ const pageTitle = t('site.title');
<div class="w-3 h-3 rounded-full bg-green-500"></div>
</div>
<div class="text-gray-400 text-sm font-mono">
john@dev-workspace
{personalInfo.terminal.username}
</div>
<div></div>
</div>
@@ -224,15 +224,11 @@ const pageTitle = t('site.title');
About Me
</h3>
<div class="prose prose-lg dark:prose-invert max-w-none">
<p class="text-gray-700 dark:text-gray-300 leading-relaxed">
I'm a passionate developer with 5+ years of experience building web applications and contributing to open source projects. I specialize in creating clean, efficient, and maintainable code.
</p>
<p class="text-gray-700 dark:text-gray-300 leading-relaxed">
When I'm not coding, you can find me exploring new technologies, writing tech articles, or enjoying a fresh cup of coffee while debugging complex problems.
</p>
<p class="text-gray-700 dark:text-gray-300 leading-relaxed">
I believe in continuous learning and staying up-to-date with the latest industry trends and best practices.
</p>
{personalInfo.about.en.map((paragraph) => (
<p class="text-gray-700 dark:text-gray-300 leading-relaxed">
{paragraph}
</p>
))}
</div>
</div>
@@ -243,7 +239,7 @@ const pageTitle = t('site.title');
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"></path>
</svg>
<div class="text-2xl font-bold text-gray-900 dark:text-white mb-1">
152
{personalInfo.stats.repositories}
</div>
<div class="text-xs text-gray-600 dark:text-gray-400">
Repositories
@@ -255,7 +251,7 @@ const pageTitle = t('site.title');
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.618 5.984A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016zM12 9v2.25"></path>
</svg>
<div class="text-2xl font-bold text-gray-900 dark:text-white mb-1">
42K
{personalInfo.stats.commits}
</div>
<div class="text-xs text-gray-600 dark:text-gray-400">
Commits
@@ -267,7 +263,7 @@ const pageTitle = t('site.title');
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path>
</svg>
<div class="text-2xl font-bold text-gray-900 dark:text-white mb-1">
87
{personalInfo.stats.contributions}
</div>
<div class="text-xs text-gray-600 dark:text-gray-400">
PRs Merged