A modern, production-ready portfolio website built with React, featuring heavy frontend animations, parallax scrolling effects, and beautiful design aesthetics inspired by premium portfolio sites.
- Responsive Design: Mobile-first approach with optimized layouts for all devices
- Dark/Light Theme: Persistent theme switching with smooth transitions
- Smooth Scrolling: Seamless navigation between sections
- Contact Form: Animated form with client-side validation
- Project Showcase: Interactive project grid with modal case studies
- Parallax Scrolling: Multi-layered parallax effects with different scroll speeds
- 3D Card Tilts: Interactive project cards with realistic 3D hover effects
- Custom Cursor: Desktop-only custom cursor with hover interactions
- Framer Motion: Comprehensive animation system with entrance/exit effects
- Scroll-Triggered Animations: Content reveals based on scroll position
- Micro-interactions: Button hovers, form field focus states, and loading animations
- Lazy Loading: Optimized image loading for better performance
- Reduced Motion Support: Respects user accessibility preferences
- Semantic HTML: Proper HTML structure for screen readers
- Keyboard Navigation: Full keyboard accessibility support
- SEO Optimized: Meta tags and structured content
- Frontend: React 18 + TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS with custom design system
- Animations: Framer Motion
- Icons: Lucide React
- Routing: React Router DOM
- Development: ESLint + TypeScript
-
Clone the repository
git clone <repository-url> cd portfolio-website
-
Install dependencies
npm install
-
Start development server
npm run dev
-
Build for production
npm run build
-
Preview production build
npm run preview
- Personal Information: Update contact details in
src/components/ContactForm.jsxandsrc/components/Footer.jsx - Projects: Modify the projects array in
src/components/ProjectsGrid.jsx - About Section: Edit content in
src/components/About.jsx - Hero Section: Update headlines and description in
src/components/Hero.jsx
- Colors: Customize the color palette in
tailwind.config.js - Typography: Update font families and sizes in the Tailwind config
- Animations: Modify animation variants in
src/lib/animations.js - Layout: Adjust spacing and breakpoints in component files
{
id: 7,
title: "Your Project Title",
description: "Brief project description",
image: "https://your-image-url.jpg",
category: "Web App", // or "Mobile", "Dashboard", etc.
technologies: ["React", "Node.js", "MongoDB"],
github: "https://github.com/your-repo",
demo: "https://your-demo-url.com",
longDescription: "Detailed project description for modal",
challenges: "Technical challenges faced",
results: "Project outcomes and metrics"
}- Use WebP format for better compression
- Implement responsive images with
srcset - Lazy load images below the fold
- Compress images before deployment
// Example of lazy loading components
const ProjectsGrid = lazy(() => import('./components/ProjectsGrid'));npm run build
npx vite-bundle-analyzer dist- Minimize unused CSS with PurgeCSS
- Optimize font loading with
font-display: swap - Use CDN for static assets
- Enable gzip compression on server
Create a .env file for environment-specific configurations:
VITE_CONTACT_FORM_ENDPOINT=your-form-endpoint
VITE_ANALYTICS_ID=your-analytics-id
VITE_SITE_URL=https://your-domain.comThe site automatically detects and respects the prefers-reduced-motion setting:
- Disables complex animations on mobile devices
- Reduces motion for users with accessibility preferences
- Maintains visual appeal while improving performance
- Optimized touch targets (minimum 44px)
- Swipe gestures for project navigation
- Improved tap responsiveness
- Connect your repository to Netlify
- Set build command:
npm run build - Set publish directory:
dist - Deploy!
- Install Vercel CLI:
npm i -g vercel - Run:
vercel - Follow the prompts
- Build the project:
npm run build - Serve the
distfolder with your preferred server - Configure gzip compression and caching headers
Update meta tags in index.html:
<meta name="description" content="Your portfolio description">
<meta property="og:title" content="Your Name - Portfolio">
<meta property="og:description" content="Your portfolio description">
<meta property="og:image" content="https://your-domain.com/og-image.jpg">Add JSON-LD structured data for better search engine understanding.
- Modern Browsers: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
- Mobile: iOS Safari 14+, Chrome Mobile 90+
- Graceful Degradation: Basic functionality on older browsers
MIT License - feel free to use this project for your own portfolio!
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit changes:
git commit -m 'Add feature' - Push to branch:
git push origin feature-name - Submit a pull request
If you encounter any issues or have questions:
- Check the Issues section
- Review the documentation
- Create a new issue with detailed information
- Design Inspiration: Modern portfolio websites and Dribbble shots
- Icons: Lucide React icon library
- Images: Pexels (for demo images)
- Animations: Framer Motion community examples
Built with β€οΈ by a passionate developer