Spaces:
Running
Running
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Nabeel Raza - Data Science Portfolio</title> | |
<script src="https://cdn.tailwindcss.com"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script> | |
<script src="https://cdn.jsdelivr.net/npm/[email protected]/examples/js/controls/OrbitControls.min.js"></script> | |
<script src="https://cdn.jsdelivr.net/npm/[email protected]/examples/js/loaders/GLTFLoader.min.js"></script> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> | |
<style> | |
body { | |
margin: 0; | |
overflow: hidden; | |
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; | |
background-color: #000; | |
} | |
#canvas-container { | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
z-index: 1; | |
} | |
#ui-container { | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
z-index: 2; | |
pointer-events: none; | |
} | |
.ui-element { | |
pointer-events: auto; | |
} | |
.panel { | |
background: rgba(0, 0, 0, 0.8); | |
backdrop-filter: blur(10px); | |
border-radius: 15px; | |
box-shadow: 0 10px 30px rgba(255, 255, 255, 0.1); | |
transition: all 0.3s ease; | |
border: 1px solid rgba(255, 255, 255, 0.1); | |
} | |
.panel:hover { | |
transform: translateY(-5px); | |
box-shadow: 0 15px 35px rgba(255, 255, 255, 0.15); | |
} | |
.nav-item { | |
transition: all 0.3s ease; | |
} | |
.nav-item:hover { | |
transform: scale(1.1); | |
} | |
.skill-bar { | |
height: 10px; | |
border-radius: 5px; | |
background: linear-gradient(90deg, #3b82f6, #6366f1); | |
} | |
.floating { | |
animation: floating 6s ease-in-out infinite; | |
} | |
@keyframes floating { | |
0% { transform: translateY(0px); } | |
50% { transform: translateY(-15px); } | |
100% { transform: translateY(0px); } | |
} | |
.typewriter { | |
overflow: hidden; | |
border-right: 3px solid #3b82f6; | |
white-space: nowrap; | |
animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite; | |
} | |
@keyframes typing { | |
from { width: 0 } | |
to { width: 100% } | |
} | |
@keyframes blink-caret { | |
from, to { border-color: transparent } | |
50% { border-color: #3b82f6; } | |
} | |
.text-primary { | |
color: #ffffff; | |
} | |
.text-secondary { | |
color: #d1d5db; | |
} | |
.bg-primary { | |
background-color: rgba(0, 0, 0, 0.8); | |
} | |
.border-primary { | |
border-color: rgba(255, 255, 255, 0.1); | |
} | |
</style> | |
</head> | |
<body> | |
<div id="canvas-container"></div> | |
<div id="ui-container" class="flex flex-col"> | |
<!-- Header --> | |
<header class="flex justify-between items-center p-6"> | |
<div class="ui-element"> | |
<h1 class="text-4xl font-bold text-white drop-shadow-lg">NABEEL RAZA</h1> | |
</div> | |
<nav class="flex space-x-6 ui-element"> | |
<button id="nav-about" class="nav-item text-white font-medium hover:text-blue-300 transition">About</button> | |
<button id="nav-experience" class="nav-item text-white font-medium hover:text-blue-300 transition">Experience</button> | |
<button id="nav-projects" class="nav-item text-white font-medium hover:text-blue-300 transition">Projects</button> | |
<button id="nav-skills" class="nav-item text-white font-medium hover:text-blue-300 transition">Skills</button> | |
<button id="nav-contact" class="nav-item text-white font-medium hover:text-blue-300 transition">Contact</button> | |
</nav> | |
</header> | |
<!-- Main Content --> | |
<main class="flex-grow flex items-center justify-center px-10"> | |
<!-- About Panel (Default) --> | |
<div id="about-panel" class="panel ui-element w-full max-w-4xl p-10"> | |
<div class="flex flex-col md:flex-row gap-8"> | |
<div class="flex-shrink-0"> | |
<div class="w-48 h-48 rounded-full bg-gradient-to-br from-blue-400 to-purple-500 overflow-hidden floating mx-auto"> | |
<img src="WhatsApp Image 2025-01-27 at 7.48.23 PM.jpeg" alt="Profile" class="w-full h-full object-cover"> | |
</div> | |
</div> | |
<div class="flex-grow"> | |
<h1 class="text-4xl font-bold text-white mb-2 typewriter">AI & Data Science Engineer</h1> | |
<p class="text-gray-300 mb-4">Transforming data into intelligent solutions</p> | |
<div class="h-1 w-20 bg-gradient-to-r from-blue-400 to-purple-500 mb-6"></div> | |
<p class="text-gray-300 mb-6"> | |
Passionate AI engineer with expertise in machine learning, computer vision, and natural language processing. | |
Currently pursuing MSc in Data Science while working on cutting-edge AI projects. | |
</p> | |
<div class="flex space-x-4"> | |
<button class="bg-blue-500 hover:bg-blue-600 text-white px-6 py-2 rounded-full transition"> | |
<i class="fas fa-download mr-2"></i> Download CV | |
</button> | |
<button class="border border-blue-500 text-blue-500 hover:bg-blue-900 hover:bg-opacity-30 px-6 py-2 rounded-full transition"> | |
<i class="fas fa-envelope mr-2"></i> Contact Me | |
</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Experience Panel --> | |
<div id="experience-panel" class="panel ui-element w-full max-w-4xl p-10 hidden"> | |
<h2 class="text-3xl font-bold text-white mb-8">Professional Experience</h2> | |
<div class="space-y-8"> | |
<!-- Experience 1 --> | |
<div class="flex gap-6"> | |
<div class="flex-shrink-0 w-14 h-14 rounded-full bg-blue-900 bg-opacity-30 flex items-center justify-center"> | |
<i class="fas fa-briefcase text-blue-400 text-xl"></i> | |
</div> | |
<div> | |
<h3 class="text-xl font-semibold text-white">AI Engineer</h3> | |
<p class="text-blue-400 mb-1">Antematter • Jun. 2024 – Present</p> | |
<ul class="text-gray-300 list-disc pl-5 space-y-2"> | |
<li>Developed a code review agent using OpenAI's API and LangChain's ReAct prompting</li> | |
<li>Integrated Slither and ItyFuzz for smart contract analysis</li> | |
<li>Collaborated on Web3 tool for on-chain data and market stats using mixture-of-agent framework</li> | |
<li>Contributed to IAO platform enabling dynamic creation of AI agents</li> | |
</ul> | |
</div> | |
</div> | |
<!-- Experience 2 --> | |
<div class="flex gap-6"> | |
<div class="flex-shrink-0 w-14 h-14 rounded-full bg-blue-900 bg-opacity-30 flex items-center justify-center"> | |
<i class="fas fa-briefcase text-blue-400 text-xl"></i> | |
</div> | |
<div> | |
<h3 class="text-xl font-semibold text-white">Data Scientist</h3> | |
<p class="text-blue-400 mb-1">Spatial Labs Pvt. Ltd. • Feb. 2023 – Jun. 2024</p> | |
<ul class="text-gray-300 list-disc pl-5 space-y-2"> | |
<li>Developed hybrid technique combining Learned Noise Prediction and Fourier Transform for image authentication (89% accuracy)</li> | |
<li>Improved YOLOv8 model efficacy from 67 mAP to 95 mAP for vehicle monitoring</li> | |
<li>Assessed LLM responses using PairRM in LLM Blender</li> | |
<li>Implemented Whisper model for offline speech-to-text translation</li> | |
<li>Created synthetic data generation scripts in Blender</li> | |
</ul> | |
</div> | |
</div> | |
<!-- Experience 3 --> | |
<div class="flex gap-6"> | |
<div class="flex-shrink-0 w-14 h-14 rounded-full bg-blue-900 bg-opacity-30 flex items-center justify-center"> | |
<i class="fas fa-briefcase text-blue-400 text-xl"></i> | |
</div> | |
<div> | |
<h3 class="text-xl font-semibold text-white">Data Science Intern</h3> | |
<p class="text-blue-400 mb-1">Spatial Labs Pvt. Ltd. • Sep. 2022 – Feb. 2023</p> | |
<ul class="text-gray-300 list-disc pl-5 space-y-2"> | |
<li>Customized UNET model for land cover classification (IoU 0.92)</li> | |
<li>Adapted YOLOv5 for forest tree damage recognition</li> | |
<li>Competed in ship detection challenge (mAP 0.86 public leaderboard)</li> | |
</ul> | |
</div> | |
</div> | |
<!-- Experience 4 --> | |
<div class="flex gap-6"> | |
<div class="flex-shrink-0 w-14 h-14 rounded-full bg-blue-900 bg-opacity-30 flex items-center justify-center"> | |
<i class="fas fa-briefcase text-blue-400 text-xl"></i> | |
</div> | |
<div> | |
<h3 class="text-xl font-semibold text-white">Answers Intern</h3> | |
<p class="text-blue-400 mb-1">Educative Inc. • Jun. 2022 – Aug. 2022</p> | |
<ul class="text-gray-300 list-disc pl-5 space-y-2"> | |
<li>Authored 28 technical pieces on AI and computer vision topics</li> | |
<li>Evaluated 52 technical articles</li> | |
<li>Covered ViT, Segmentation, Transformers, and Data Augmentation</li> | |
</ul> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Projects Panel --> | |
<div id="projects-panel" class="panel ui-element w-full max-w-4xl p-10 hidden"> | |
<h2 class="text-3xl font-bold text-white mb-8">Featured Projects</h2> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> | |
<!-- Project 1 --> | |
<div class="bg-gray-900 rounded-xl shadow-md overflow-hidden hover:shadow-xl transition border border-gray-800"> | |
<div class="h-40 bg-gradient-to-r from-blue-400 to-purple-500 flex items-center justify-center"> | |
<i class="fas fa-map-marked-alt text-white text-5xl"></i> | |
</div> | |
<div class="p-6"> | |
<h3 class="text-xl font-semibold text-white mb-2">TrajectoryQA</h3> | |
<p class="text-gray-300 mb-4"> | |
System for responding to inquiries based on trajectory descriptions using Geolife dataset and OpenStreetMap. | |
Achieved 79.6% accuracy with GPT-2 model. | |
</p> | |
<div class="flex flex-wrap gap-2"> | |
<span class="bg-blue-900 bg-opacity-30 text-blue-400 text-xs px-3 py-1 rounded-full">DuckDB</span> | |
<span class="bg-blue-900 bg-opacity-30 text-blue-400 text-xs px-3 py-1 rounded-full">Transformers</span> | |
<span class="bg-blue-900 bg-opacity-30 text-blue-400 text-xs px-3 py-1 rounded-full">NLP</span> | |
</div> | |
</div> | |
</div> | |
<!-- Project 2 --> | |
<div class="bg-gray-900 rounded-xl shadow-md overflow-hidden hover:shadow-xl transition border border-gray-800"> | |
<div class="h-40 bg-gradient-to-r from-green-400 to-teal-500 flex items-center justify-center"> | |
<i class="fas fa-envelope text-white text-5xl"></i> | |
</div> | |
<div class="p-6"> | |
<h3 class="text-xl font-semibold text-white mb-2">Email Lead Generator</h3> | |
<p class="text-gray-300 mb-4"> | |
Two-agent system using LangChain and GPT-4 for lead generation and follow-up. | |
Opener agent creates initial emails, Escalator handles responses. | |
</p> | |
<div class="flex flex-wrap gap-2"> | |
<span class="bg-green-900 bg-opacity-30 text-green-400 text-xs px-3 py-1 rounded-full">LangChain</span> | |
<span class="bg-green-900 bg-opacity-30 text-green-400 text-xs px-3 py-1 rounded-full">GPT-4</span> | |
<span class="bg-green-900 bg-opacity-30 text-green-400 text-xs px-3 py-1 rounded-full">Automation</span> | |
</div> | |
</div> | |
</div> | |
<!-- Project 3 --> | |
<div class="bg-gray-900 rounded-xl shadow-md overflow-hidden hover:shadow-xl transition border border-gray-800"> | |
<div class="h-40 bg-gradient-to-r from-purple-400 to-pink-500 flex items-center justify-center"> | |
<i class="fas fa-code text-white text-5xl"></i> | |
</div> | |
<div class="p-6"> | |
<h3 class="text-xl font-semibold text-white mb-2">Smart Contract Auditor</h3> | |
<p class="text-gray-300 mb-4"> | |
Code review agent using OpenAI API and LangChain's ReAct prompting. | |
Integrated Slither and ItyFuzz for comprehensive analysis. | |
</p> | |
<div class="flex flex-wrap gap-2"> | |
<span class="bg-purple-900 bg-opacity-30 text-purple-400 text-xs px-3 py-1 rounded-full">Blockchain</span> | |
<span class="bg-purple-900 bg-opacity-30 text-purple-400 text-xs px-3 py-1 rounded-full">AI</span> | |
<span class="bg-purple-900 bg-opacity-30 text-purple-400 text-xs px-3 py-1 rounded-full">Security</span> | |
</div> | |
</div> | |
</div> | |
<!-- Project 4 --> | |
<div class="bg-gray-900 rounded-xl shadow-md overflow-hidden hover:shadow-xl transition border border-gray-800"> | |
<div class="h-40 bg-gradient-to-r from-yellow-400 to-orange-500 flex items-center justify-center"> | |
<i class="fas fa-satellite-dish text-white text-5xl"></i> | |
</div> | |
<div class="p-6"> | |
<h3 class="text-xl font-semibold text-white mb-2">Satellite Image Authentication</h3> | |
<p class="text-gray-300 mb-4"> | |
Hybrid technique combining Learned Noise Prediction and Fourier Transform | |
for distinguishing authentic satellite images (89% accuracy). | |
</p> | |
<div class="flex flex-wrap gap-2"> | |
<span class="bg-yellow-900 bg-opacity-30 text-yellow-400 text-xs px-3 py-1 rounded-full">CV</span> | |
<span class="bg-yellow-900 bg-opacity-30 text-yellow-400 text-xs px-3 py-1 rounded-full">Stable Diffusion</span> | |
<span class="bg-yellow-900 bg-opacity-30 text-yellow-400 text-xs px-3 py-1 rounded-full">Forensics</span> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Skills Panel --> | |
<div id="skills-panel" class="panel ui-element w-full max-w-4xl p-10 hidden"> | |
<h2 class="text-3xl font-bold text-white mb-8">Technical Skills</h2> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-8"> | |
<div> | |
<h3 class="text-xl font-semibold text-white mb-4">Programming & Tools</h3> | |
<div class="space-y-4"> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">Python</span> | |
<span class="text-gray-400">95%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 95%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">PyTorch</span> | |
<span class="text-gray-400">90%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 90%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">HuggingFace</span> | |
<span class="text-gray-400">85%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 85%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">Docker</span> | |
<span class="text-gray-400">80%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 80%"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div> | |
<h3 class="text-xl font-semibold text-white mb-4">Machine Learning</h3> | |
<div class="space-y-4"> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">Computer Vision</span> | |
<span class="text-gray-400">90%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 90%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">NLP</span> | |
<span class="text-gray-400">85%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 85%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">LLMs</span> | |
<span class="text-gray-400">80%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 80%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">Generative AI</span> | |
<span class="text-gray-400">75%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 75%"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div> | |
<h3 class="text-xl font-semibold text-white mb-4">Data Engineering</h3> | |
<div class="space-y-4"> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">SQL</span> | |
<span class="text-gray-400">90%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 90%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">DuckDB</span> | |
<span class="text-gray-400">85%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 85%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">PySpark</span> | |
<span class="text-gray-400">80%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 80%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">Airflow</span> | |
<span class="text-gray-400">70%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 70%"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div> | |
<h3 class="text-xl font-semibold text-white mb-4">Web3 & Blockchain</h3> | |
<div class="space-y-4"> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">Smart Contracts</span> | |
<span class="text-gray-400">80%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 80%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">Slither</span> | |
<span class="text-gray-400">75%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 75%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">Solidity</span> | |
<span class="text-gray-400">70%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 70%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-1"> | |
<span class="text-gray-300">Web3.py</span> | |
<span class="text-gray-400">65%</span> | |
</div> | |
<div class="w-full bg-gray-800 rounded-full h-2"> | |
<div class="bg-gradient-to-r from-blue-400 to-purple-500 h-2 rounded-full" style="width: 65%"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Contact Panel --> | |
<div id="contact-panel" class="panel ui-element w-full max-w-4xl p-10 hidden"> | |
<h2 class="text-3xl font-bold text-white mb-8">Get In Touch</h2> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-8"> | |
<div> | |
<h3 class="text-xl font-semibold text-white mb-4">Contact Information</h3> | |
<div class="space-y-4"> | |
<div class="flex items-center gap-4"> | |
<div class="w-12 h-12 rounded-full bg-blue-900 bg-opacity-30 flex items-center justify-center"> | |
<i class="fas fa-envelope text-blue-400 text-xl"></i> | |
</div> | |
<div> | |
<p class="text-gray-400">Email</p> | |
<p class="text-white font-medium">[email protected]</p> | |
</div> | |
</div> | |
<div class="flex items-center gap-4"> | |
<div class="w-12 h-12 rounded-full bg-blue-900 bg-opacity-30 flex items-center justify-center"> | |
<i class="fas fa-phone text-blue-400 text-xl"></i> | |
</div> | |
<div> | |
<p class="text-gray-400">Phone</p> | |
<p class="text-white font-medium">+92-300-4755991</p> | |
</div> | |
</div> | |
<div class="flex items-center gap-4"> | |
<div class="w-12 h-12 rounded-full bg-blue-900 bg-opacity-30 flex items-center justify-center"> | |
<i class="fas fa-map-marker-alt text-blue-400 text-xl"></i> | |
</div> | |
<div> | |
<p class="text-gray-400">Location</p> | |
<p class="text-white font-medium">Pakistan</p> | |
</div> | |
</div> | |
</div> | |
<div class="mt-8"> | |
<h3 class="text-xl font-semibold text-white mb-4">Social Media</h3> | |
<div class="flex space-x-4"> | |
<a href="https://linkedin.com/in/nabeelraza-7" target="_blank" class="w-12 h-12 rounded-full bg-blue-900 bg-opacity-30 hover:bg-opacity-50 flex items-center justify-center transition"> | |
<i class="fab fa-linkedin-in text-blue-400 text-xl"></i> | |
</a> | |
<a href="https://github.com/nabeelraza-7" target="_blank" class="w-12 h-12 rounded-full bg-blue-900 bg-opacity-30 hover:bg-opacity-50 flex items-center justify-center transition"> | |
<i class="fab fa-github text-blue-400 text-xl"></i> | |
</a> | |
<a href="#" class="w-12 h-12 rounded-full bg-blue-900 bg-opacity-30 hover:bg-opacity-50 flex items-center justify-center transition"> | |
<i class="fab fa-twitter text-blue-400 text-xl"></i> | |
</a> | |
<a href="#" class="w-12 h-12 rounded-full bg-blue-900 bg-opacity-30 hover:bg-opacity-50 flex items-center justify-center transition"> | |
<i class="fab fa-kaggle text-blue-400 text-xl"></i> | |
</a> | |
</div> | |
</div> | |
</div> | |
<div> | |
<h3 class="text-xl font-semibold text-white mb-4">Send Me a Message</h3> | |
<form class="space-y-4"> | |
<div> | |
<label for="name" class="block text-gray-300 mb-2">Name</label> | |
<input type="text" id="name" class="w-full px-4 py-2 bg-gray-800 border border-gray-700 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none transition text-white"> | |
</div> | |
<div> | |
<label for="email" class="block text-gray-300 mb-2">Email</label> | |
<input type="email" id="email" class="w-full px-4 py-2 bg-gray-800 border border-gray-700 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none transition text-white"> | |
</div> | |
<div> | |
<label for="message" class="block text-gray-300 mb-2">Message</label> | |
<textarea id="message" rows="4" class="w-full px-4 py-2 bg-gray-800 border border-gray-700 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none transition text-white"></textarea> | |
</div> | |
<button type="submit" class="bg-blue-500 hover:bg-blue-600 text-white px-6 py-3 rounded-lg transition w-full"> | |
Send Message | |
</button> | |
</form> | |
</div> | |
</div> | |
</div> | |
</main> | |
<!-- Footer --> | |
<footer class="p-6 text-center ui-element"> | |
<p class="text-white drop-shadow-lg">© 2024 Nabeel Raza. All rights reserved.</p> | |
</footer> | |
</div> | |
<script> | |
// Three.js Scene Setup | |
let scene, camera, renderer, particles; | |
function initThreeJS() { | |
// Scene | |
scene = new THREE.Scene(); | |
scene.background = new THREE.Color(0x000000); | |
// Camera | |
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); | |
camera.position.z = 30; | |
// Renderer | |
renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }); | |
renderer.setSize(window.innerWidth, window.innerHeight); | |
document.getElementById('canvas-container').appendChild(renderer.domElement); | |
// Particles | |
const particleCount = 1500; | |
const particlesGeometry = new THREE.BufferGeometry(); | |
const positions = new Float32Array(particleCount * 3); | |
const sizes = new Float32Array(particleCount); | |
for (let i = 0; i < particleCount; i++) { | |
positions[i * 3] = (Math.random() - 0.5) * 500; | |
positions[i * 3 + 1] = (Math.random() - 0.5) * 500; | |
positions[i * 3 + 2] = (Math.random() - 0.5) * 500; | |
sizes[i] = Math.random() * 2; | |
} | |
particlesGeometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); | |
particlesGeometry.setAttribute('size', new THREE.BufferAttribute(sizes, 1)); | |
const particlesMaterial = new THREE.PointsMaterial({ | |
size: 1, | |
color: 0xffffff, | |
transparent: true, | |
opacity: 0.8, | |
sizeAttenuation: true, | |
blending: THREE.AdditiveBlending | |
}); | |
particles = new THREE.Points(particlesGeometry, particlesMaterial); | |
scene.add(particles); | |
// Add some larger stars | |
const starGeometry = new THREE.BufferGeometry(); | |
const starPositions = new Float32Array(100 * 3); | |
const starSizes = new Float32Array(100); | |
for (let i = 0; i < 100; i++) { | |
starPositions[i * 3] = (Math.random() - 0.5) * 1000; | |
starPositions[i * 3 + 1] = (Math.random() - 0.5) * 1000; | |
starPositions[i * 3 + 2] = (Math.random() - 0.5) * 1000; | |
starSizes[i] = 2 + Math.random() * 3; | |
} | |
starGeometry.setAttribute('position', new THREE.BufferAttribute(starPositions, 3)); | |
starGeometry.setAttribute('size', new THREE.BufferAttribute(starSizes, 1)); | |
const stars = new THREE.Points(starGeometry, new THREE.PointsMaterial({ | |
size: 1, | |
color: 0xffffff, | |
sizeAttenuation: true | |
})); | |
scene.add(stars); | |
// Animation | |
function animate() { | |
requestAnimationFrame(animate); | |
particles.rotation.x += 0.0005; | |
particles.rotation.y += 0.0005; | |
renderer.render(scene, camera); | |
} | |
animate(); | |
// Handle window resize | |
window.addEventListener('resize', () => { | |
camera.aspect = window.innerWidth / window.innerHeight; | |
camera.updateProjectionMatrix(); | |
renderer.setSize(window.innerWidth, window.innerHeight); | |
}); | |
} | |
// UI Navigation | |
function initUI() { | |
const navAbout = document.getElementById('nav-about'); | |
const navExperience = document.getElementById('nav-experience'); | |
const navProjects = document.getElementById('nav-projects'); | |
const navSkills = document.getElementById('nav-skills'); | |
const navContact = document.getElementById('nav-contact'); | |
const aboutPanel = document.getElementById('about-panel'); | |
const experiencePanel = document.getElementById('experience-panel'); | |
const projectsPanel = document.getElementById('projects-panel'); | |
const skillsPanel = document.getElementById('skills-panel'); | |
const contactPanel = document.getElementById('contact-panel'); | |
function hideAllPanels() { | |
aboutPanel.classList.add('hidden'); | |
experiencePanel.classList.add('hidden'); | |
projectsPanel.classList.add('hidden'); | |
skillsPanel.classList.add('hidden'); | |
contactPanel.classList.add('hidden'); | |
} | |
navAbout.addEventListener('click', () => { | |
hideAllPanels(); | |
aboutPanel.classList.remove('hidden'); | |
}); | |
navExperience.addEventListener('click', () => { | |
hideAllPanels(); | |
experiencePanel.classList.remove('hidden'); | |
}); | |
navProjects.addEventListener('click', () => { | |
hideAllPanels(); | |
projectsPanel.classList.remove('hidden'); | |
}); | |
navSkills.addEventListener('click', () => { | |
hideAllPanels(); | |
skillsPanel.classList.remove('hidden'); | |
}); | |
navContact.addEventListener('click', () => { | |
hideAllPanels(); | |
contactPanel.classList.remove('hidden'); | |
}); | |
} | |
// Initialize | |
window.onload = function() { | |
initThreeJS(); | |
initUI(); | |
}; | |
</script> | |
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - <a href="https://enzostvs-deepsite.hf.space?remix=nabeelraza/portfolio" style="color: #fff;text-decoration: underline;" target="_blank" >🧬 Remix</a></p></body> | |
</html> |