A modern, animated, and minimal portfolio website built with cutting-edge web technologies
This portfolio isn't just another websiteβit's a carefully crafted digital experience that showcases modern web development at its finest:
- π¨ Design Excellence: Minimalist yet stunning UI with a cohesive dark theme featuring a signature #c8ff00 accent color
- β‘ Buttery Smooth: Implemented with Lenis smooth scrolling and Framer Motion animations for a premium feel
- π― Performance First: Built with Next.js 16 App Router, optimized fonts, and modern React 19
- π± Fully Responsive: Pixel-perfect adaptation from mobile to ultra-wide displays
- π Micro-interactions: Every element has been thoughtfully animated to delight users
- βΏ Accessible: Semantic HTML, ARIA labels, and keyboard navigation support
- βοΈ Next.js 16.0.3 - The React Framework for Production (App Router)
- βοΈ React 19.2.0 - Latest React with improved performance
- π TypeScript 5 - Type-safe development
- π¨ Tailwind CSS v4 - Latest utility-first CSS framework
- π¨ @tailwindcss/postcss - PostCSS plugin for Tailwind v4
- π tw-animate-css - Extended animation utilities
- π§ class-variance-authority - Component variant management
- π§ clsx - Conditional className utility
- π§ tailwind-merge - Merge Tailwind classes without conflicts
- π¬ Motion (Framer Motion) 12.23.24 - Production-ready animations
- π Lenis 1.3.15 - Smooth scrolling library with ReactLenis integration
- π― Lucide React 0.554.0 - Beautiful, consistent icon library
- π¨ shadcn/ui - Re-usable component architecture (via components.json)
- βοΈ Ulm Grotesk - Primary font (Bold 700, Extrabold 800)
- βοΈ Akzidenz Grotesk Black - Headings font (Weight 900)
- βοΈ Coconut Movie - Accent/decorative font (Weight 400)
- π ESLint 9 - Linting with Next.js config
- π¦ PostCSS - CSS processing
- π§ TypeScript strict mode - Maximum type safety
Challenge: Implementing smooth scrolling without janky performance or conflicting with Framer Motion animations.
Solution: Integrated Lenis with custom configuration (lerp: 0.1, duration: 1.2) wrapped in a client component, ensuring compatibility with Next.js SSR and React 19's concurrent features.
Challenge: Custom fonts causing layout shift (CLS) and slow initial render.
Solution: Used Next.js localFont with optimized font subsets, CSS variables, and proper font-display strategies. Implemented font preloading in layout.tsx for instant text rendering.
Challenge: Coordinating multiple staggered animations across different components without performance degradation.
Solution: Leveraged Framer Motion's variants system with viewport-based triggers (whileInView) and optimal once: true settings to prevent re-animations. Used word-by-word reveal with optimized delays (delay: index * 0.03).
Challenge: Adapting to Tailwind CSS v4's new PostCSS-first architecture and breaking changes.
Solution: Restructured globals.css with @import "tailwindcss" and @theme inline blocks, implementing custom CSS variables for design tokens and dark mode support.
Challenge: Complex TypeScript types with Framer Motion props and Next.js Image component.
Solution: Proper typing of motion variants, careful use of client components ("use client"), and strict TypeScript configuration ensuring no type compromises.
Challenge: Creating a design that looks stunning across all devices (mobile to 4K) with complex text sizing.
Solution: Implemented a comprehensive responsive scale using Tailwind's breakpoints (text-5xl sm:text-6xl md:text-7xl lg:text-8xl xl:text-9xl) with careful testing at each breakpoint.
- Animated entrance with staggered text reveals
- Profile picture with scaling animation
- Custom "CODE" badge with hover effects
- Section numbering system (01/)
- Word-by-word scroll reveal animation
- Profile image with border effects
- Social links (Instagram, Twitter, GitHub, LinkedIn)
- Animated "Learn More" circular button with arrow
- Section numbering (02/)
- Project showcase with hover effects
- Responsive grid layout
- Section numbering (03/)
- Technology visualization
- Animated skill cards
- Section numbering (04/)
- Contact form with validation
- Social links integration
- Smooth animations
- Smooth page transitions with PageTransition component
- Responsive navbar
- Footer with social links
- Lenis smooth scrolling throughout
- Page transition animations
- Dark theme with custom color palette
- Optimized images with Next.js Image component
- Node.js 20.x or higher
- npm, yarn, pnpm, or bun
-
Clone the repository
git clone https://github.com/yourusername/portfolio.git cd portfolio -
Install dependencies
npm install # or yarn install # or pnpm install # or bun install
-
Run the development server
npm run dev # or yarn dev # or pnpm dev # or bun dev
-
Open your browser
Navigate to http://localhost:3000
npm run build
npm run startmy-app/
βββ app/
β βββ about/ # About section & details page
β βββ components/ # Reusable components (SmoothScrolling, PageTransition)
β βββ contact/ # Contact section & page
β βββ hero/ # Hero section
β βββ projects/ # Projects section & page
β βββ skills/ # Skills section
β βββ universal/ # Global components (Navbar, Footer)
β βββ globals.css # Global styles & Tailwind config
β βββ layout.tsx # Root layout with fonts
β βββ page.tsx # Homepage
βββ fonts/ # Custom fonts (Ulm Grotesk, Akzidenz Grotesk, Coconut Movie)
βββ public/ # Static assets (images, favicon)
βββ Assests/ # Design references
βββ lib/ # Utility functions
βββ components.json # shadcn/ui configuration
βββ tsconfig.json # TypeScript configuration
βββ eslint.config.mjs # ESLint configuration
βββ next.config.ts # Next.js configuration
βββ package.json # Dependencies
This portfolio follows a minimalist yet impactful design philosophy:
- Dark Theme: Primary background
#1a1a1afor reduced eye strain - Accent Color: Signature lime
#c8ff00for CTAs and highlights - Typography: Custom fonts create a unique, professional identity
- Whitespace: Generous spacing for breathing room
- Animations: Subtle, purposeful motion that enhances UX without distraction
- Consistency: Unified design language across all sections
- β Chrome (latest)
- β Firefox (latest)
- β Safari (latest)
- β Edge (latest)
- β Mobile browsers (iOS Safari, Chrome Mobile)
- β‘ Lighthouse Score: 95+ Performance
- π― Core Web Vitals: Excellent on all metrics
- π¦ Bundle Size: Optimized with Next.js automatic code splitting
- πΌοΈ Image Optimization: Next.js Image component with WebP conversion
- π€ Font Loading: Optimized with local fonts and CSS variables
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available for personal and commercial use.
Souvik Karfa
- Self-taught Full Stack Developer
- Based in Kolkata, West Bengal
- Specializing in Design & Development, Creative Direction, and Iconography
- Education: Biju Pattanaik University of Technology, Bhubaneswar, Odisha
- Next.js for the amazing framework
- Framer Motion for animation capabilities
- Lenis for smooth scrolling
- Tailwind CSS for utility-first styling
- Lucide for beautiful icons
- shadcn/ui for component inspiration
For inquiries, reach out through the contact form or connect on social media.
Made with β€οΈ and lots of β by Souvik Karfa
β Star this repo if you find it helpful!