A modern, responsive portfolio website built with React 18, Vite, and Tailwind CSS. Showcasing MERN Stack development skills with beautiful animations and interactive elements.
- Modern Design: Clean, professional design with dark/light theme support
- Responsive: Fully responsive across all devices and screen sizes
- Animations: Smooth Framer Motion animations and micro-interactions
- Performance: Optimized with lazy loading and code splitting
- Accessibility: WCAG compliant with proper ARIA labels and keyboard navigation
- SEO Ready: Meta tags and Open Graph support for social sharing
- Frontend: React 18, Vite
- Styling: Tailwind CSS, CSS Custom Properties
- Animations: Framer Motion
- Icons: Custom SVG icons
- Fonts: Google Fonts (Playfair Display, Space Grotesk, DM Sans, JetBrains Mono)
{
"react": "^18.2.0",
"react-dom": "^18.2.0",
"framer-motion": "^10.16.0",
"react-intersection-observer": "^9.5.3",
"react-type-animation": "^3.2.0",
"react-countup": "^6.5.3",
"react-hot-toast": "^2.4.1",
"emailjs-com": "^3.2.0"
}-
Clone the repository
git clone https://github.com/suman-karmakar/portfolio.git cd portfolio -
Install dependencies
npm install
-
Start development server
npm run dev
-
Build for production
npm run build
-
Preview production build
npm run preview
src/
├── components/ # Reusable UI components
│ ├── Navbar.jsx # Fixed navigation with theme toggle
│ ├── CustomCursor.jsx # Desktop cursor effects
│ ├── ScrollProgress.jsx # Top progress bar
│ ├── BackToTop.jsx # Floating back-to-top button
│ └── ThemeToggle.jsx # Dark/light theme switcher
├── sections/ # Main page sections
│ ├── Hero.jsx # Landing section with animated name
│ ├── About.jsx # Profile with stats and skills
│ ├── Projects.jsx # Featured projects grid
│ ├── TechStack.jsx # Technology skills showcase
│ ├── Education.jsx # Education timeline
│ ├── GitHubStats.jsx # GitHub activity and stats
│ ├── Contact.jsx # Contact form with EmailJS
│ └── Footer.jsx # Site footer with social links
├── hooks/ # Custom React hooks
│ ├── useTheme.js # Theme management
│ ├── useScrollProgress.js # Scroll tracking
│ └── useIntersectionObserver.js # Viewport detection
├── constants/ # Static data
│ ├── projects.js # Project portfolio data
│ ├── techStack.js # Technology stack data
│ └── education.js # Education history data
└── styles/ # Global styles
├── globals.css # CSS variables and base styles
└── animations.css # Keyframe animations
Update color variables in src/index.css:
:root {
--primary: #3b82f6;
--secondary: #06b6d4;
--text: #1f2937;
--muted: #6b7280;
--surface: #ffffff;
--background: #f9fafb;
--border: #e5e7eb;
}Update personal details in the respective constant files:
src/constants/projects.js- Your projectssrc/constants/techStack.js- Your tech stacksrc/constants/education.js- Your education
Configure EmailJS in src/sections/Contact.jsx:
emailjs.init('YOUR_SERVICE_ID');To get notified when someone visits your live portfolio:
- Copy
.env.exampleto.env - Set
VITE_VISIT_NOTIFY_ENDPOINTto your webhook endpoint - Optionally set
VITE_VISIT_NOTIFY_TOKENfor endpoint verification
Notification payload includes URL, time, referrer, timezone, language, and user-agent.
- Connect your GitHub repository to Vercel
- Deploy automatically on every push
- Custom domain support included
- Build command:
npm run build - Publish directory:
dist - Deploy with one click
npm run build
# Upload the 'dist' folder to your hosting provider- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
This project is open source and available under the MIT License.
Suman Karmakar
- Website: suman-karmakar.dev
- LinkedIn: linkedin.com/in/suman-karmakar
- GitHub: github.com/suman-karmakar
- Email: suman.karmakar@example.com
Built with ❤️ using React and modern web technologies.