Portfolio Website

A modular and scalable portfolio that showcases my growth as a front-end developer. Built with the Next.js, Tailwind, and Contentful, the site highlights key projects, my professional journey, and a fully customized resume, all while following a refined UI inspired by modern design systems.

About

My Role

I handled the entire development and design of the site — from setting up CMS content models in Contentful to building reusable UI components with Tailwind. I focused on achieving visual consistency, accessible interactions, dynamic data handling, and a scalable structure.

Project Overview

This is my main portfolio site — built from scratch as a long-term foundation to document my skills, experience, and personal evolution as a developer. Every section is structured to be flexible and reusable, and all content is dynamically pulled from Contentful. The design is intentionally clean, color-balanced, and optimized to be both expressive and professional.

Stack:

    Next.jsTailwind CSSContentful CMSTypeScriptVercel

User Journey

The user journey of my portfolio website guides visitors through a smooth and engaging experience — starting with clear CTA buttons and recent project highlights on the homepage, supported by an intuitive navigation menu. As users move into the portfolio section, they’re met with detailed project showcases that include technical insights and interactive elements, making it easy to explore more work. The journey continues through the "About Me" and "Journey" pages, where I share personal stories and career milestones to foster a deeper connection. Each section offers a clear window into my skills, growth, and perspective as a developer. The experience wraps up with a dedicated contact page, making it effortless for visitors to reach out.

Features

Dynamic Content Updates

Projects, timeline entries (Journey), and resume sections are fully managed via Contentful, allowing for dynamic updates without touching the code and making it easy to update and expand.

Reusable and Composable Components

Every component, from <ProjectCard /> to <ExperienceItem />, is intentionally designed for flexibility with minimal props, clean structure, and clear separation of concerns. This approach supports easier testing, consistent reusability across the site, and long-term scalability, making the codebase simpler to maintain and extend as the project grows.

Behind the Code: My Story

This portfolio acts like a digital scrapbook — a place where I document and evolve my professional and creative journey. Dedicated pages to share not only technical milestones, but also personal reflections and creative evolution.

Challenges and Solutions

Difficulty maintaining and updating content through code

Challenge

Content like projects, resume, and timeline entries previously required code changes to update. This made maintaining and scaling the site inconvenient and error-prone. JSON files were used to store structured data, but they lacked flexibility and dynamic control.

Migrated to Contentful CMS

Solution

Integrated Contentful as a headless CMS to manage content externally. Built flat content models with optional JSON fields for flexible nested data. This allowed non-code content updates and opened the door for richer dynamic rendering without modifying source files.

Codebase wasn’t flexible enough for long-term growth

Challenge

The initial version of the portfolio relied on manually written CSS and static JSX structure. While it achieved the desired layout and design, it made the codebase rigid and difficult to maintain or reuse. There was no scalable way to extend UI patterns across the site.

Rebuilt UI using Tailwind and modular component architecture

Solution

Converted custom CSS into Tailwind utility classes and refactored static JSX into reusable, self-contained components like ProjectCard, Avatar, and Button. This made the codebase easier to scale, visually consistent, and much simpler to update or expand in the future.

The site was hard to expand and wasn’t optimized for search engines

Challenge

The earlier version of the portfolio was built with plain React, which lacked native routing, layout support, and SEO capabilities. As the site grew, managing routes, page metadata, and shared layouts became repetitive and harder to scale.

Rebuilt with Next.js 15 and App Router

Solution

Migrated the codebase to Next.js 15 using the App Router for file-based routing, nested layouts, and improved scalability. Implemented dynamic routes for project and resume pages, added structured metadata for SEO, and leveraged server components where appropriate to optimize performance and page structure.

Future Plans

Private Analytics Dashboard

Planning to add a private dashboard (e.g., using Plausible or Vercel Analytics) to track page interest, clicks on projects, and common navigation paths. This will help understand how visitors interact with the site and which content gets the most traction.

Contact or Feedback

Feel free to reach out with any questions, feedback, or collaboration ideas related to my portfolio. You can get in touch through the contact page or connect via the social links in the footer.