A modern, professional portfolio website built with Next.js 14, React, TypeScript, and Framer Motion. Features a sleek dark/light mode toggle, custom animated cursor, loading screen, and smooth scroll animations.
β¨ Modern Design
- Clean, bold layout with professional aesthetic
- Dark mode (default) and light mode themes
- Smooth glassmorphism effects
- Responsive mobile-first design
π¨ Interactive Elements
- Custom animated cursor with hover effects
- Smooth scroll animations on section reveal
- Animated loading screen with progress bar
- Hover effects on cards and buttons
- Keyboard-accessible navigation
π§ Technical Features
- Next.js 14 with App Router
- TypeScript for type safety
- Tailwind CSS for styling
- Framer Motion for animations
- Optimized images with next/image
- SEO-friendly structure
- Dark/light mode persistence in localStorage
π± Responsive
- Mobile-first approach
- Mobile hamburger menu with staggered animations
- Tablet and desktop optimized layouts
- Touch-friendly interactive elements
- Framework: Next.js 14
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- Icons: Lucide React
- Fonts: Google Fonts (Syne, DM Sans)
- Node.js 16.x or higher
- npm or yarn
- Clone the repository
git clone <repository-url>
cd portfolio- Install dependencies
npm install
# or
yarn install
# or
pnpm install- Run the development server
npm run dev
# or
yarn dev
# or
pnpm dev- Open your browser Navigate to http://localhost:3000
portfolio/
βββ app/
β βββ layout.tsx # Root layout with metadata
β βββ page.tsx # Main page with all sections
β βββ globals.css # Global styles and animations
βββ components/
β βββ Navbar.tsx # Fixed navigation bar
β βββ Hero.tsx # Hero section
β βββ About.tsx # About section with skills
β βββ Projects.tsx # Projects grid with filtering
β βββ Experience.tsx # Experience timeline
β βββ Testimonials.tsx # Client testimonials carousel
β βββ Contact.tsx # Contact form and info
β βββ Footer.tsx # Footer section
β βββ LoadingScreen.tsx # Loading screen animation
β βββ CustomCursor.tsx # Custom cursor component
βββ hooks/
β βββ useDarkMode.ts # Dark mode toggle hook
β βββ useActiveSection.ts # Active section detection
βββ utils/
β βββ cn.ts # Class name utility
βββ tailwind.config.ts # Tailwind CSS config
βββ tsconfig.json # TypeScript config
βββ next.config.js # Next.js config
βββ postcss.config.js # PostCSS config
βββ package.json # Dependencies
βββ .gitignore # Git ignore file
- Availability badge with pulsing indicator
- Large heading with subtitle
- CTA buttons for navigation
- Social media icons
- Profile image with geometric frame and floating badge
- Bio paragraph
- Animated stat counters
- Skill cards with progress bars
- Responsive 2-column layout
- Filter tabs for different categories
- Responsive 2-column grid
- Hover overlay with project details
- Project category badges
- Tags for technologies used
- Vertical timeline layout
- Alternating left/right cards on desktop
- Single column on mobile
- Yellow timeline dots
- Role, company, and date information
- Carousel with arrow navigation
- Star ratings
- Client photos and details
- Dot indicators for current position
- Auto-sliding support
- Contact information cards
- Contact form with validation
- Social media links
- Responsive layout
Edit the color variables in tailwind.config.ts and app/globals.css:
- Update the accent color:
--accent-yellowβ your color - Update background:
--dark-bgβ your background - Update text colors for light/dark modes
Google Fonts are imported in app/globals.css. Change fonts:
- Update the import URL
- Update font family in
tailwind.config.ts
Replace placeholder content in each component:
- Hero section: Update name, title, bio
- About section: Update bio and skills
- Projects: Add your actual projects
- Experience: Update your work history
- Testimonials: Add real client feedback
- Contact: Update contact information
Replace Unsplash placeholder images with your own:
- Upload images to your preferred hosting
- Update image URLs in components
- Ensure images are optimized for web
- Default theme is dark mode
- Toggle button in navbar (sun/moon icon)
- Theme preference saved in localStorage
- Smooth transition between modes
- Desktop only feature
- Hidden on touch devices
- Animated ring that follows mouse
- Expands on link/button hover
- Customizable in
components/CustomCursor.tsx
- Image optimization with next/image
- Framer Motion animations are GPU-accelerated
- Lazy loading for sections
- Optimized bundle with tree-shaking
- Chrome/Edge: Latest 2 versions
- Firefox: Latest 2 versions
- Safari: Latest 2 versions
- Mobile browsers: Modern versions
npm run build
vercelnpm run build
npm startThe site includes:
- Semantic HTML structure
- Meta tags in layout.tsx
- Open Graph support ready
- Mobile-friendly design
- Fast Core Web Vitals
This project is open source and available under the MIT License.
For questions or issues, feel free to reach out or open an issue in the repository.
Built with β€οΈ using Next.js and Framer Motion