How I Built My Portfolio with Tailwind & shadcn UI
Next.js
Tailwind CSS
shadcn UI
Portfolio

How I Built My Portfolio with Tailwind & shadcn UI

A deep dive into the process of creating a modern developer portfolio using Tailwind CSS and shadcn UI components.

Abdulazeez Badmus
January 15, 2024
8 min read

How I Built My Portfolio with Tailwind & shadcn UI


Building a developer portfolio is more than just showcasing your work—it's about creating an experience that reflects your skills, personality, and attention to detail. In this post, I'll walk you through how I built my portfolio using modern web technologies.


The Tech Stack


I chose a modern, performant stack that would allow me to focus on design and user experience:


  • **Next.js 14** - For the React framework with App Router
  • **TypeScript** - For type safety and better developer experience
  • **Tailwind CSS** - For utility-first styling
  • **shadcn/ui** - For beautiful, accessible components
  • **Framer Motion** - For smooth animations
  • **next-themes** - For dark/light mode support

  • Design Philosophy


    My approach was to create a clean, minimal design that puts the focus on content while still being visually engaging. I wanted something that would work well for both light and dark themes.


    Key Design Decisions:


  • **Typography-first approach** - Using IBM Plex Mono for a developer-friendly feel
  • **Subtle animations** - Enhancing UX without being distracting
  • **Glassmorphism effects** - Adding depth and modern aesthetics
  • **Responsive design** - Mobile-first approach

  • Implementation Highlights


    Theme System

    I implemented a robust theme system using next-themes that persists user preferences and handles SSR properly.


    Component Architecture

    Each page is split into server and client components for optimal performance:

  • Server components handle metadata and static content
  • Client components handle interactivity and animations

  • Performance Optimizations

  • Image optimization with Next.js Image component
  • Code splitting with dynamic imports
  • Minimal JavaScript bundle size

  • Challenges and Solutions


    Hydration Issues

    One of the biggest challenges was handling theme switching without hydration mismatches. I solved this by:

  • Using proper mounting checks
  • Implementing fallback states
  • Disabling SSR for theme-dependent components

  • Animation Performance

    To ensure smooth animations across devices:

  • Used CSS transforms instead of layout properties
  • Implemented proper will-change declarations
  • Added reduced motion support

  • What's Next?


    I'm planning to add:

  • Blog functionality with MDX support
  • Project case studies
  • Interactive demos
  • Performance analytics

  • Conclusion


    Building this portfolio was an excellent opportunity to experiment with modern web technologies while creating something that truly represents my work. The combination of Next.js, Tailwind, and shadcn/ui provided the perfect balance of developer experience and end-user performance.


    Feel free to check out the source code and let me know what you think!


    About the Author

    Abdulazeez Badmus is a software engineer and problem-solver based in Nigeria, passionate about building meaningful digital solutions.