Portfolio
Next.js
Sanity CMS
Tailwind CSS
ShadCN
Framer Motion
Tech Stack & Features
- Next.js / React
- Sanity CMS
- Tailwind CSS / ShadCN
Integrations:
Next.js
Sanity CMS
Tailwind CSS
ShadCN
Framer Motion
About this Project
This portfolio site is a fully custom build powered by Next.js, Tailwind CSS, and shadcn/ui, with all content managed through Sanity CMS and delivered via fast, flexible GROQ queries. Framer Motion is used throughout to add smooth animations and polished transitions, enhancing the user experience. The site is designed to be a clean, responsive showcase of my work, with structured content, reusable components, and seamless performance across every page. Combining Sanity’s headless CMS with modern React tooling allows me to update projects, posts, and metadata effortlessly while keeping the frontend lightweight, accessible, and highly maintainable.
Challenges
CMS Integration & Data Fetching
Structuring content in Sanity and writing efficient GROQ queries to fetch data dynamically can be tricky, especially when handling nested or conditional content.
Server-Side Rendering & Static Generation
Balancing SSR, SSG, and client-side fetching in Next.js to optimize performance while keeping content up-to-date.
Animation Performance
Using Framer Motion for smooth transitions without introducing layout shifts, jank, or blocking rendering on larger pages.
Responsive Design & Tailwind Complexity
nsuring layouts, typography, and media scale properly across devices while maintaining a clean and maintainable Tailwind setup.
Dynamic Routing & Component Reusability
Creating reusable components for project cards, blog posts, and pages while managing dynamic routes and fallback states.
SEO & Metadata Management
Dynamically generating SEO-friendly meta tags, Open Graph images, and page titles for portfolio projects and blog posts.
Content Updates & Live Preview
Managing Sanity CMS content updates without breaking live site features, including previewing unpublished content safely.
Type Safety & Validation
Ensuring data fetched from Sanity matches expected types, avoiding runtime errors, and handling missing or malformed data gracefully.
Performance Optimization
Lazy-loading images, videos, and components while keeping bundle size minimal and page load times fast.
Accessibility & UX
Designing interactive elements, navigation, and transitions to be keyboard- and screen-reader-friendly while maintaining visual polish.
What I Learned
Building this portfolio gave me hands-on experience with Sanity CMS and introduced me to writing GROQ queries to fetch structured content efficiently. I also gained practical skills in implementing layout animations and transitions using Framer Motion, learning how to enhance the user experience without sacrificing performance. Throughout the project, I strengthened my understanding of Next.js and Tailwind CSS, improving my ability to create responsive, reusable components and dynamic pages while maintaining clean, maintainable code.