Skip to content

RamyRxr/WebDev-Portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

35 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ 3D Portfolio | Ramy's Interactive Developer Space

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.

Portfolio Preview

โœจ Features Overview

Core Features

  • ๐ŸŽฏ 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

Animation Features

  • โœจ 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

๐Ÿ› ๏ธ Tech Stack

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

๐Ÿ—๏ธ Project Structure

๐Ÿ“ฆ 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

โœจ New Components and Sections

Contact Section

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 .env file. Use the command:
    npm install @emailjs/browser
  • Form Handling: The form captures user input and handles submission with loading states and success/error messages.

Testimonials Section

The Testimonials section displays user feedback and reviews, enhancing the portfolio's credibility and showcasing user satisfaction.

Footer Section

The Footer section contains links and information about the portfolio, providing users with easy navigation and additional resources.

New Components

  • ContactExperience: A new component that displays a 3D model related to the contact experience, enhancing user interaction.

๐Ÿ“ง EmailJS Integration

To enable email functionality, the project uses EmailJS. Follow these steps to set it up:

  1. Install the EmailJS library:
    npm install @emailjs/browser
  2. Create an account on EmailJS and set up your email service and template.
  3. Add your EmailJS credentials to the .env file:
    VITE_APP_EMAILJS_PUBLIC_KEY=your_public_key
    VITE_APP_EMAILJS_SERVICE_ID=your_service_id
    VITE_APP_EMAILJS_TEMPLATE_ID=your_template_id
    
  4. Use the emailjs.sendForm method in the handleSubmit function of the Contact component to send emails.

๐Ÿ”ง Installation & Setup Commands

Core Dependencies

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/postprocessing

GSAP Setup

GSAP 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
};

React Three Fiber Setup

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>
);

EmailJS Configuration

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" >> .env

Then 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
};

Tailwind CSS Setup

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(),
  ],
})

๐Ÿ”’ Environment Setup

This project uses environment variables for sensitive information. To set up your local environment:

  1. Create a .env file in the root directory
  2. Copy the structure from .env.example
  3. 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.

๐Ÿš€ Getting Started

To run the project locally:

  1. Clone the repository.
  2. Install dependencies:
    npm install
  3. Start the development server:
    npm run dev

๐Ÿ“‹ Development Progress

โœ… Completed

  • 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

๐Ÿ”„ In Progress

  • Additional portfolio sections (About)
  • More interactive 3D elements
  • Animation refinements
  • Performance optimizations for mobile devices

๐Ÿ”ฎ Future Plans

  • Dark/Light theme toggle
  • Project showcase with detailed case studies
  • Interactive resume section
  • More advanced 3D interactions

๐Ÿ“ฌ Contact

Feel free to reach out if you have any questions or would like to collaborate!

Ramy - [Your Contact Info]

๐Ÿ“ License

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

About

๐ŸŽจ A stunning 3D developer portfolio built with React, Tailwind CSS, and WebGL-powered components. Showcasing interactive design, creative coding, and modern web technologies.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors