You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A high-performance, interactive portfolio website featuring 3D character animations, smooth scroll effects, and modern web technologies. Built with React, TypeScript, Three.js, and GSAP.
Horizontal Scroll Section - Work portfolio section with horizontal scrolling effect
Physics-Based Tech Stack - Interactive 3D spheres with physics simulation using React Three Fiber and Rapier
Dynamic Loading Screen - Engaging loading experience with animated elements and progress tracking
Text Animations - SplitText-powered character and word animations
Custom Cursor - Enhanced cursor with magnetic effects on interactive elements
Responsive Design - Fully responsive across desktop, tablet, and mobile devices
SEO Optimized - Meta tags and semantic HTML for search engine visibility
ποΈ Architecture Overview
Portfolio-Website/
βββ public/ # Static assets
β βββ images/ # Image assets (logo, tech icons, placeholders)
β βββ models/ # 3D model files (.glb, .hdr)
β βββ draco/ # Draco decoder for compressed 3D models
β βββ resume/ # Downloadable resume PDF
βββ src/
β βββ components/ # React components
β β βββ Character/ # 3D character scene and utilities
β β βββ styles/ # Component-specific CSS files
β β βββ utils/ # Animation and scroll utilities
β βββ context/ # React context providers
β βββ data/ # Static data files
β βββ assets/ # Additional assets
βββ index.html # HTML entry point
βββ vite.config.ts # Vite configuration
βββ package.json # Dependencies and scripts
π¦ Component Breakdown
Core Components
Component
Purpose
Key Dependencies
App.tsx
Root component, sets up providers and lazy loading
LoadingProvider
MainContainer.tsx
Main layout wrapper, renders all sections in order
All section components
LoadingProvider.tsx
Context provider for loading state management
React Context
Section Components
Component
Purpose
Key Features
Landing.tsx
Hero section with name and role display
Text loop animations
About.tsx
Personal introduction section
SplitText animations
WhatIDo.tsx
Skills showcase (Frontend & Backend)
Interactive skill cards
Career.tsx
Work experience timeline
Animated timeline with dots
Work.tsx
Portfolio projects with horizontal scroll
GSAP ScrollTrigger pinning
TechStack.tsx
Interactive 3D tech spheres
React Three Fiber, Rapier physics
Contact.tsx
Contact information and social links
Dynamic copyright year
UI Components
Component
Purpose
Navbar.tsx
Fixed navigation with smooth scroll links
Loading.tsx
Loading screen with progress and welcome animation
Cursor.tsx
Custom cursor with magnetic effect
SocialIcons.tsx
Floating social media icons with resume download
HoverLinks.tsx
Animated hover effect for navigation links
WorkImage.tsx
Project image container with video support
3D Character System
File
Purpose
Character/Scene.tsx
Main Three.js scene setup and render loop
Character/utils/character.ts
Character model loading (GLTF)
Character/utils/lighting.ts
Scene lighting configuration
Character/utils/animationUtils.ts
Character animation mixer
Character/utils/mouseUtils.ts
Mouse/touch input handling for head tracking
Character/utils/resizeUtils.ts
Responsive canvas resizing
Animation Utilities
File
Purpose
utils/GsapScroll.ts
Scroll-triggered animations for character and sections
utils/splitText.ts
Text splitting and reveal animations
utils/initialFX.ts
Initial page load animations
π Data Flow & Processing
Loading Sequence
1. App.tsx renders LoadingProvider
βββ LoadingProvider shows Loading.tsx
βββ Scene.tsx starts loading 3D model
βββ setProgress() tracks loading percentage
βββ When 100%, triggers initialFX()
βββ Plays intro animations
βββ Sets isLoading=false, hides loader
Scroll Animation Pipeline
1. User scrolls page
βββ ScrollSmoother intercepts scroll (smooth: 1.7)
βββ ScrollTrigger detects section positions
βββ Timeline animations execute based on scroll progress
βββ Character transforms (rotation, position)
βββ Section opacity/transform changes
βββ Element stagger animations
3D Character Interaction
1. Mouse/Touch event detected
βββ handleMouseMove() normalizes coordinates
βββ handleHeadRotation() calculates target rotation
βββ THREE.MathUtils.lerp() smooths movement
βββ Bone rotation applied each frame
π Component Relationships
graph TD
A[App.tsx] --> B[LoadingProvider]
B --> C[Loading.tsx]
B --> D[MainContainer.tsx]
D --> E[Navbar.tsx]
D --> F[SocialIcons.tsx]
D --> G[Cursor.tsx]
D --> H[Landing.tsx]
D --> I[About.tsx]
D --> J[WhatIDo.tsx]
D --> K[Career.tsx]
D --> L[Work.tsx]
D --> M[TechStack.tsx]
D --> N[Contact.tsx]
H --> O[Character/Scene.tsx]
O --> P[character.ts]
O --> Q[lighting.ts]
O --> R[animationUtils.ts]
E --> S[ScrollSmoother]
L --> T[WorkImage.tsx]
Loading
βοΈ Key Dependencies
Package
Version
Purpose
react
^18.3.1
UI framework
three
^0.168.0
3D graphics library
@react-three/fiber
^8.17.10
React renderer for Three.js
@react-three/drei
^9.120.4
Three.js helpers and abstractions
@react-three/rapier
^1.5.0
Physics engine for 3D
gsap
^3.12.7
Animation library (includes ScrollSmoother, SplitText - now free!)
react-fast-marquee
^1.6.5
Marquee text component
react-icons
^5.3.0
Icon library
π Getting Started
Prerequisites
Node.js 18+
npm or yarn
Installation
# Clone the repository
git clone https://github.com/ShoaibAhmedSoomro/Shoaib-Ahmed-3D-Portfolio.git
# Navigate to project directorycd Shoaib-Ahmed-3D-Portfolio
# Install dependencies
npm install
# Start development server
npm run dev
Available Scripts
Script
Description
npm run dev
Start development server with hot reload
npm run build
TypeScript compile + Vite production build
npm run preview
Preview production build locally
npm run lint
Run ESLint for code quality
π Static Assets
Images (public/images/)
logo.webp - Site logo and favicon
react2.webp, next2.webp, etc. - Tech stack sphere textures
placeholder.webp - Project placeholder image
3D Models (public/models/)
Character model (.glb format with Draco compression)
Environment HDR for realistic lighting
Resume (public/resume/)
Shoaib_Ahmed.pdf - Downloadable resume
π¨ Styling Architecture
CSS Variables - Global theming via :root variables
Component CSS - Each component has dedicated .css file
A high-performance, interactive portfolio website featuring 3D character animations, smooth scroll effects, and modern web technologies. Built with React, TypeScript, Three.js, and GSAP.