Welcome to my 3D portfolio โ a modern, interactive space showcasing my web development skills and projects. This portfolio combines sleek design with immersive 3D elements to create an engaging user experience.
- ๐ฏ Interactive Hero Section with animated word cycling and GSAP animations
- ๐ 3D Model Integration through React Three Fiber
- ๐จ Custom UI Components with advanced hover effects and animations
- ๐ Animated Statistics with CountUp for dynamic number displays
- ๐ผ๏ธ Project Showcase with scroll-triggered reveal animations
- ๐ฑ Fully Responsive Design optimized for all device sizes
- โจ Interactive Glowing Cards with mouse-following effects
- ๐ข Professional Experience Timeline with scroll animations
- ๐ Infinite Logo Carousel with seamless looping animation
- ๐งฉ Feature Cards showcasing key abilities and services
- ๐ ๏ธ 3D Tech Stack Display with floating interactive models
- ๐ง Animated 3D Icons with hover effects and realistic lighting
- ๐ฌ Client Testimonials displayed in interactive glowing cards
- ๐จ Functional Contact Form with EmailJS integration
- ๐ฅ๏ธ 3D Computer Scene for visual appeal in the contact section
- ๐ฃ Footer Section with social media links and copyright information
- โจ GSAP-powered title animations with staggered entrances
- ๐ Dynamic text cycling in hero section
- ๐ ScrollTrigger-based animations for project reveals
- ๐ข Numerical statistics with animated counting effect
- ๐ Smooth transitions between sections
- ๐ Mouse-reactive glowing borders on cards
- โฑ๏ธ Timeline animations that respond to scroll position
- ๐ Optimized infinite marquee with no visible breaks
- ๐ซ Floating 3D models with realistic physics
- ๐ Environment lighting and shadows for 3D elements
- ๐ Interactive OrbitControls for 3D models
| Technology | Purpose | Implementation |
|---|---|---|
| React | Frontend framework | Component-based UI architecture |
| Tailwind CSS | Styling | Utility-first approach with custom classes |
| Three.js | 3D rendering | Core 3D graphics engine with custom materials and lighting |
| React Three Fiber | Three.js integration | React components for 3D elements with Canvas |
| @react-three/drei | 3D helpers | Environment, Float, OrbitControls, useGLTF utilities |
| GSAP | Animations | Advanced timeline-based animations with ScrollTrigger |
| ScrollTrigger | Scroll animations | Trigger animations on scroll position |
| React CountUp | Numerical animations | Animated number counting |
| EmailJS | Contact form | Server-less email sending from contact form |
| React-Responsive | Responsive design | Media queries for different devices |
| useRef Hook | DOM references | Direct access to DOM elements for animations |
๐ฆ 3D-Portfolio/
โโโ public/ # Static assets
โ โโโ images/ # Image assets (logos, backgrounds, etc.)
โ โ โโโ bg.png # Background image for hero section
โ โ โโโ project1.png # Project showcase images
โ โ โโโ project2.png # Library Management Platform image
โ โ โโโ project3.png # YC Directory image
โ โ โโโ star.png # Star icon for reviews
โ โโโ models/ # 3D model files (.glb)
โ โโโ react.glb # React 3D icon model
โ โโโ other-tech.glb # Various tech stack 3D models
โโโ src/
โ โโโ components/ # Reusable UI components
โ โ โโโ AnimatedCounter.jsx # Counter statistics with React CountUp
โ โ โโโ Button.jsx # Custom animated button component
โ โ โโโ GlowCard.jsx # Interactive card with mouse-following glow
โ โ โโโ NavBar.jsx # Navigation with scroll effects
โ โ โโโ TitleHeader.jsx # Section title component
โ โ โโโ Models/ # 3D model components
โ โ โ โโโ TechIcon.jsx # Tech stack 3D model renderer
โ โ โ โโโ Contacts/ # Contact related components
โ โ โ โโโ ContactExperience.jsx # 3D experience for contact section
โ โ โ โโโ Contact.jsx # Contact form component
โ โ โโโ HeroModels/ # 3D models for hero section
โ โ โโโ HeroExperience.jsx # Main hero 3D scene
โ โโโ constants/ # App constants and configuration
โ โ โโโ index.js # Data for sections (words, counterItems, techStack)
โ โโโ sections/ # Main page sections
โ โ โโโ hero.jsx # Hero section with 3D integration
โ โ โโโ TechStack.jsx # Tech stack section with 3D icons
โ โ โโโ Contact.jsx # Contact section with form and experience
โ โ โโโ Testimonials.jsx # Testimonials section for user feedback
โ โ โโโ Footer.jsx # Footer section for additional navigation
โ โโโ App.jsx # Main application component
โ โโโ index.css # Global styles and Tailwind components
โโโ tailwind.config.js # Tailwind configuration
โโโ vite.config.js # Vite build configuration
โโโ package.json # Project dependencies and scripts
โโโ README.md # Project documentation
The Contact section allows users to send messages directly through a form. It utilizes EmailJS for server-less email sending. Users can fill in their name, email, and message, and upon submission, the form sends an email without needing a backend server.
- EmailJS Integration: To set up EmailJS, ensure you have created a template in your EmailJS dashboard and added the necessary environment variables in your
.envfile. Use the command:npm install @emailjs/browser
- Form Handling: The form captures user input and handles submission with loading states and success/error messages.
The Testimonials section displays user feedback and reviews, enhancing the portfolio's credibility and showcasing user satisfaction.
The Footer section contains links and information about the portfolio, providing users with easy navigation and additional resources.
- ContactExperience: A new component that displays a 3D model related to the contact experience, enhancing user interaction.
To enable email functionality, the project uses EmailJS. Follow these steps to set it up:
- Install the EmailJS library:
npm install @emailjs/browser
- Create an account on EmailJS and set up your email service and template.
- Add your EmailJS credentials to the
.envfile:VITE_APP_EMAILJS_PUBLIC_KEY=your_public_key VITE_APP_EMAILJS_SERVICE_ID=your_service_id VITE_APP_EMAILJS_TEMPLATE_ID=your_template_id - Use the
emailjs.sendFormmethod in thehandleSubmitfunction of the Contact component to send emails.
Install the main project dependencies:
# Install base dependencies
npm install react react-dom @react-three/fiber @react-three/drei three gsap @gsap/react
# Install UI and animation libraries
npm install tailwindcss react-countup react-responsive
# Install contact functionality
npm install @emailjs/browser
# Install additional 3D effects
npm install @react-three/postprocessingGSAP requires proper initialization and plugin registration in your components:
// Import GSAP and plugins
import gsap from "gsap";
import { useGSAP } from "@gsap/react";
import { ScrollTrigger } from "gsap/ScrollTrigger";
// Register plugins (must be done before using)
gsap.registerPlugin(ScrollTrigger);
// Use in component with useGSAP hook
const YourComponent = () => {
useGSAP(() => {
// GSAP animations here
gsap.to(".element", { /* animation properties */ });
// ScrollTrigger setup
ScrollTrigger.create({
trigger: ".trigger-element",
// Other ScrollTrigger options
});
}, []);
// Component JSX
};For 3D components using React Three Fiber:
// Import necessary components
import { Canvas } from "@react-three/fiber";
import { OrbitControls, Environment, useGLTF } from "@react-three/drei";
import * as THREE from "three";
// Create your 3D component
const Model = () => {
const { scene } = useGLTF("/path/to/model.glb");
return <primitive object={scene} />;
};
// Use within a Canvas
const Scene = () => (
<Canvas>
<ambientLight intensity={0.5} />
<directionalLight position={[5, 5, 5]} intensity={1} />
<Environment preset="city" />
<OrbitControls />
<Model />
</Canvas>
);To configure EmailJS:
# Create a .env file in your project root
touch .env
# Add your EmailJS credentials
echo "VITE_APP_EMAILJS_SERVICE_ID=your_service_id" >> .env
echo "VITE_APP_EMAILJS_TEMPLATE_ID=your_template_id" >> .env
echo "VITE_APP_EMAILJS_PUBLIC_KEY=your_public_key" >> .envThen initialize EmailJS in your app:
import { useEffect } from "react";
import emailjs from "@emailjs/browser";
const App = () => {
useEffect(() => {
emailjs.init(import.meta.env.VITE_APP_EMAILJS_PUBLIC_KEY);
}, []);
// App JSX
};To set up Tailwind CSS with Vite:
# Install Tailwind CSS
npm install -D tailwindcss @tailwindcss/vite
# Generate config files
npx tailwindcss init
# Add to vite.config.js// vite.config.js
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [
react(),
tailwindcss(),
],
})This project uses environment variables for sensitive information. To set up your local environment:
- Create a
.envfile in the root directory - Copy the structure from
.env.example - Fill in your own API keys and credentials
IMPORTANT: Never commit your .env file to version control. It's already added to .gitignore to prevent accidental commits.
To run the project locally:
- Clone the repository.
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Initial project setup with React and Tailwind CSS
- Hero section with animated text cycling
- Button component with custom animations
- 3D model integration using React Three Fiber and drei
- Responsive design implementation
- GSAP animations for UI elements
- GlowCard component with mouse-following effects
- Experience section with timeline animations
- Logo carousel with RequestAnimationFrame optimization
- Feature cards section for skills display
- TechStack section with interactive 3D models
- 3D tech icons with floating animations
- Contact Section with email functionality
- Testimonials Section for user feedback
- Footer Section for additional navigation and information
- Contact Component for user inquiries
- ContactExperience Component for displaying 3D models
- Additional portfolio sections (About)
- More interactive 3D elements
- Animation refinements
- Performance optimizations for mobile devices
- Dark/Light theme toggle
- Project showcase with detailed case studies
- Interactive resume section
- More advanced 3D interactions
Feel free to reach out if you have any questions or would like to collaborate!
Ramy - [Your Contact Info]
This project is licensed under the MIT License - see the LICENSE file for details.
Built with React, Three.js, React Three Fiber, GSAP, and more advanced web technologies
