| October 11, 2025 |

I am currently at the final stage of building the blog system for my personal website, specifically integrating Sanity CMS into the Next.js framework. Before shipping this final component, I wanted to document the architecture, design choices, and technical lessons behind the project so far.
This post summarizes the evolution of my portfolio site—from a static layout to a scalable, dynamic system—and how each architectural decision solved a specific problem in the development process.
When I first set out to build a portfolio, I aimed to build a maintainable, living system that could grow alongside my projects. The primary challenge was designing an architecture that was both clean and extensible—a foundation I could evolve into a comprehensive personal platform.
To achieve these goals, I selected a modern stack that balances performance, developer experience, and scalability.

1. Enhancing the User Experience with Framer Motion
<motion.h1
initial={{ opacity: 0, y: -20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
>
Welcome to My Portfolio!
</motion.h1>2. Enforcing Design Consistency with Tailwind CSS
<div className="max-w-xl mx-auto p-8 md:p-16 bg-white dark:bg-gray-900 rounded-lg shadow-lg">
{/* content */}
</div>3. Creating a Dynamic Data Layer with TypeScript
export interface Project {
title: string;
description: string;
repoUrl: string;
tags: string[];
imageUrl: string;
}The site is deployed via Vercel, ensuring automatic CI/CD with every commit, global edge caching for performance, and automatic HTTPS security.
The roadmap includes finalizing the Sanity CMS blog integration, adding serverless contact forms, and experimenting with Three.js for 3D elements. This project has become a sandbox for building real-world, production-ready frontend systems.
Repository: github.com/idra-hsieh/personal-website