A stunning, modern portfolio website featuring advanced animations, 3D interactions, and cutting-edge web technologies. Built with React, GSAP, Three.js, and Tailwind CSS.
- GSAP ScrollTrigger: Scroll-based animations throughout the site
- Split Text Animations: Character, word, and line-based text reveals
- Smooth Scrolling: Lenis integration for buttery-smooth scroll experience
- Custom Cursor: Interactive cursor with hover effects
- Scroll Progress: Visual progress indicator
- 3D Interactive Elements: Three.js powered 3D scenes
- Particle Systems: Dynamic background animations
- Gradient Animations: Smooth color transitions
- Glass Morphism: Modern UI design elements
- Responsive Design: Perfect on all devices
- Hero Section - Full-screen intro with animated text and parallax
- 3D Landing - Interactive 3D sphere with scroll-controlled animations
- About Section - Pinned image with scrolling content
- Projects Showcase - Horizontal scroll with snap cards and modals
- Skills Timeline - Vertical timeline with alternating animations
- Image Gallery - Masonry layout with zoom effects and filtering
- Contact Form - Interactive form with particle background
- Dark/Light Mode: Smooth animated theme transitions
- System Preference: Respects user's OS theme preference
- Persistent Storage: Remembers theme choice
- Optimized Animations: 60fps smooth animations
- Lazy Loading: Efficient resource loading
- Code Splitting: Optimized bundle sizes
- SEO Friendly: Meta tags and semantic HTML
- Frontend: React 19, Vite
- Animations: GSAP, ScrollTrigger, Lenis
- 3D Graphics: Three.js, React Three Fiber, Drei
- Styling: Tailwind CSS, Custom CSS
- Build Tool: Vite
- Package Manager: npm
- Node.js 16+
- npm or yarn
-
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
src/
βββ components/ # React components
β βββ AboutSection.jsx # About section with pinned image
β βββ AnimatedNavbar.jsx # Navigation with scroll highlights
β βββ ContactSection.jsx # Contact form with particles
β βββ CustomCursor.jsx # Custom cursor implementation
β βββ HeroSection.jsx # Hero section with animations
β βββ ImageGallery.jsx # Masonry gallery with filters
β βββ Preloader.jsx # Loading screen animation
β βββ ProjectsSection.jsx # Horizontal project showcase
β βββ ScrollProgress.jsx # Scroll progress indicator
β βββ SkillsTimeline.jsx # Animated timeline
β βββ SplitTextAnimation.jsx # Text animation utilities
β βββ ThreeDLanding.jsx # 3D interactive section
βββ hooks/ # Custom React hooks
β βββ useLenis.js # Smooth scrolling hook
β βββ useTheme.js # Theme management hook
βββ App.jsx # Main application component
βββ main.jsx # Application entry point
βββ index.css # Global styles and utilities
Update the color scheme in src/index.css:
:root {
--primary-purple: #8B5CF6;
--primary-pink: #EC4899;
--primary-blue: #3B82F6;
}- Personal Info: Update content in each section component
- Projects: Modify the projects array in
ProjectsSection.jsx - Skills: Update the experiences array in
SkillsTimeline.jsx - Gallery: Add your images to the images array in
ImageGallery.jsx
- GSAP Timelines: Customize animations in component
useEffecthooks - 3D Elements: Modify Three.js components in
ThreeDLanding.jsx - Text Animations: Use different animation types in
SplitTextAnimation.jsx
import { FadeUpText, WaveText, GlitchText } from './components/SplitTextAnimation';
<FadeUpText className="text-4xl font-bold">
Animated Text
</FadeUpText>ScrollTrigger.create({
trigger: element,
start: "top 80%",
end: "bottom 20%",
animation: gsap.from(element, { y: 50, opacity: 0 })
});<Canvas>
<AnimatedSphere />
<FloatingParticles />
<OrbitControls />
</Canvas>The portfolio is fully responsive with breakpoints:
- Mobile: 320px - 768px
- Tablet: 768px - 1024px
- Desktop: 1024px+
- Large Desktop: 1280px+
- Optimize Images: Use WebP format for better compression
- Lazy Loading: Implement for heavy 3D scenes
- Animation Performance: Use
will-changeCSS property - Bundle Analysis: Run
npm run build -- --analyze
Customize build settings in vite.config.js
Extend theme in tailwind.config.js
Register additional plugins in component files:
import { ScrollTrigger, TextPlugin } from 'gsap/all';
gsap.registerPlugin(ScrollTrigger, TextPlugin);npm run build
# Deploy to Vercelnpm run build
# Deploy dist/ folder to Netlifynpm run build
# Deploy dist/ folder to gh-pages branch- Animations: Inspired by modern web design trends
- 3D Elements: Three.js community examples
- Color Palette: Modern gradient combinations
- Typography: Inter font family
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create a 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
If you have any questions or need help customizing the portfolio:
- π§ Email: support@portfolio.com
- π¬ Discord: [Join our community]
- π Documentation: [Full docs]
Built with β€οΈ using modern web technologies. Perfect for:
- Developers showcasing their skills
- Designers displaying their portfolio
- Agencies presenting their work
- Freelancers attracting clients
Made with π by [Your Name]
Crafting digital experiences with passion, precision, and a touch of magic.