Makje Portfolio 2024
This Next.js portfolio website showcases a clean, responsive design with modular components and a focus on user experience. It integrates theme switching, dynamic navigation, and scalable architecture to serve as a professional online presence. The project emphasizes maintainability and performance optimization through component-based design and Tailwind CSS styling.
About
This project is a Next.js-based portfolio website designed to demonstrate modern frontend development practices. It features a modular structure with reusable components, optimized styling with Tailwind CSS, and seamless theming capabilities. The site is built to be easily extendable, performant, and visually appealing.
Purpose
The main goal is to provide a professional online portfolio that highlights personal projects and skills with a focus on user experience. Key features include:
- Dynamic navigation with mobile and desktop support
- Theme toggling between light and dark modes
- Modular layout with header, footer, and content sections
- Custom icons and scalable UI components
- Easy configuration via centralized
config.ts
Technical Deep Dive
The architecture leverages Next.js's server-side rendering and client-side hydration to deliver fast initial loads and interactive UI. The layout is composed of a root component (layout.tsx) that wraps all pages, injecting global styles and context providers. Navigation components (Header, MainNav, MobileNav) utilize NextUI's Navbar and NavbarMenu for responsive behavior, with state management for menu toggling. The theme switcher employs next-themes to toggle CSS classes dynamically, with animated icon transitions via custom motion components like FlipIcon and RotateIcon. This setup ensures a cohesive, scalable, and accessible user interface.
Lessons Learned
One challenge was managing theme state across server and client boundaries, which was addressed by deferring theme initialization until component mount (useEffect). This pattern prevents hydration mismatches and ensures consistent theme rendering. Additionally, designing a flexible navigation system that adapts seamlessly between mobile and desktop views required careful coordination of state and layout components, reinforcing the importance of component composition and responsive design principles.