A modern, responsive, and accessible portfolio website built with React, TypeScript, and Tailwind CSS, showcasing the work of Harshit Kulkarni - ML Researcher, Full-Stack Developer, and IEEE Published Author.
- Responsive Design - Optimized for all device sizes (mobile, tablet, desktop)
- Interactive Animations - Smooth transitions, typing effects, and floating elements
- Modern UI - Starry night background with gradient themes
- Comprehensive Sections - Skills, projects, experience, education, certifications, and more
- Functional Contact Form - Email integration with auto-reply
- ✅ Comprehensive meta tags (Open Graph, Twitter Cards)
- ✅ Enhanced descriptions for search engines
- ✅ Canonical URLs and proper schema markup
- ✅ Optimized for social media sharing
- ✅ Skip navigation links
- ✅ ARIA labels on all interactive elements
- ✅ Semantic HTML structure
- ✅ Descriptive alt text for images
- ✅ Keyboard navigation support
- ✅ Loading Screen - Professional animated loading experience
- ✅ Scroll Progress Bar - Visual indicator of page scroll position
- ✅ Back to Top Button - Quick navigation to top
- ✅ Active Section Highlighting - Navbar highlights current section
- ✅ Enhanced Mobile Menu - Slide-in animation with backdrop blur
- ✅ Error Boundary - Graceful error handling
- ✅ Character Counter - Real-time feedback (max 1000 chars)
- ✅ Email Validation - Client-side validation before submission
- ✅ Rate Limiting - Spam prevention (1 submission per minute)
- ✅ Success Animation - Confetti celebration on successful send
- ✅ Better Error Messages - Clear feedback for validation errors
- ✅ Google Analytics Integration - Track visitor behavior
- ✅ Resume Download Tracking - Monitor engagement
- ✅ Event Tracking - User interaction analytics
- Lazy below-fold bundle, deferred hero WebGL, Unsplash card images use
loading="lazy"andfetchPriority="low". - Vite
build.modulePreloadfilters out thethreechunk so initial navigation doesn’t prefetch WebGL. prefers-reduced-motiondisables heavy hero intro and tones down nav spotlight (CSS).- After
npm run build && npm run preview, run Lighthouse in Chrome DevTools on the preview origin for LCP / CLS / TBT.
- ✅ will-change CSS property - GPU acceleration for animations
- ✅ Lazy loading ready - Prepared for code splitting
- ✅ Optimized animations - Smooth 60fps performance
- React 18 - Modern React with hooks
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Vite - Lightning-fast build tool
- Lucide React - Beautiful, consistent icons
- Netlify Functions - Serverless contact form handler
- Nodemailer - Email sending with Gmail SMTP
- Express.js - Local development server
- Node.js 16+ installed
- Gmail account (for contact form)
-
Clone the repository
git clone https://github.com/kulharshit21/Portfolio.git cd Portfolio -
Install dependencies
npm install
-
Run development server
npm run dev
Visit
http://localhost:5173
Create an optimized production build:
npm run buildThe built files will be in the dist directory.
Preview the production build:
npm run preview-
Push code to GitHub
-
Connect repository to Netlify
-
Configure environment variables in Netlify dashboard:
SMTP_HOST= smtp.gmail.comSMTP_PORT= 465SMTP_USER= your-email@gmail.comSMTP_PASS= your-gmail-app-passwordRECIPIENT= your-email@gmail.com
-
Deploy!
See DEPLOYMENT.md for detailed deployment instructions.
- Create a Google Analytics account at analytics.google.com
- Get your Measurement ID (format: G-XXXXXXXXXX)
- Replace
GA_MEASUREMENT_IDinindex.htmlwith your actual ID
Portfolio/
├── src/
│ ├── components/ # React components
│ │ ├── ErrorBoundary.tsx # Error handling
│ │ ├── LoadingScreen.tsx # Initial load animation
│ │ ├── ScrollProgress.tsx # Scroll indicator
│ │ ├── BackToTop.tsx # Scroll to top button
│ │ ├── Navbar.tsx # Navigation with active tracking
│ │ ├── Hero.tsx # Hero + About section
│ │ ├── Skills.tsx
│ │ ├── Projects.tsx
│ │ ├── Experience.tsx
│ │ ├── Education.tsx
│ │ ├── Certifications.tsx
│ │ ├── Contact.tsx # Enhanced contact form
│ │ └── Footer.tsx
│ ├── App.tsx # Main app with error boundary
│ ├── index.css # Global styles + animations
│ └── main.tsx # Entry point
├── netlify/
│ └── functions/
│ └── contact.js # Serverless email handler with rate limiting
├── public/ # Static assets
└── Configuration files
- Animated spinner with branding
- Smooth fade-in transition
- Prevents layout shift
- Real-time scroll position tracking
- Gradient color design
- Fixed at top of viewport
- Character count with visual feedback
- Email format validation
- Minimum length requirements
- Rate limiting (server-side)
- Beautiful success modal with confetti
- Slide-in navigation menu
- Backdrop blur overlay
- Touch-optimized interactions
- Responsive typography
- Error boundary catches runtime errors
- User-friendly error messages
- Reload and home navigation options
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Mobile Safari (iOS 12+)
- Mobile Chrome (Android 8+)
- Lighthouse Score Target: 90+ (all categories)
- First Contentful Paint: < 1.5s
- Time to Interactive: < 3.5s
- Cumulative Layout Shift: < 0.1
Harshit Kulkarni
📧 Email: kulharshit21@gmail.com | hk0534@srmist.edu.in
📱 Phone: +91 8310381878
📍 Location: Chennai, Tamil Nadu 603203
ISC
Built with ❤️ by Harshit Kulkarni