Spaces:
Running
Running
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Creative Portfolio</title> | |
<script src="https://cdn.tailwindcss.com"></script> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
<style> | |
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800;900&display=swap'); | |
body { | |
font-family: 'Poppins', sans-serif; | |
background-color: #0f172a; | |
color: #f8fafc; | |
overflow-x: hidden; | |
} | |
.gradient-text { | |
background: linear-gradient(90deg, #6366f1, #8b5cf6, #ec4899); | |
-webkit-background-clip: text; | |
background-clip: text; | |
color: transparent; | |
} | |
.hero-bg { | |
background: radial-gradient(circle at 10% 20%, rgba(99, 102, 241, 0.1) 0%, rgba(15, 23, 42, 1) 30%); | |
} | |
.card-hover { | |
transition: all 0.3s ease; | |
transform-style: preserve-3d; | |
} | |
.card-hover:hover { | |
transform: translateY(-10px) scale(1.02); | |
box-shadow: 0 25px 50px -12px rgba(99, 102, 241, 0.25); | |
} | |
.skill-bar { | |
height: 8px; | |
border-radius: 4px; | |
background: rgba(255, 255, 255, 0.1); | |
overflow: hidden; | |
} | |
.skill-progress { | |
height: 100%; | |
border-radius: 4px; | |
background: linear-gradient(90deg, #6366f1, #8b5cf6); | |
width: 0; | |
transition: width 1.5s ease; | |
} | |
.floating { | |
animation: floating 6s ease-in-out infinite; | |
} | |
@keyframes floating { | |
0% { transform: translateY(0px); } | |
50% { transform: translateY(-20px); } | |
100% { transform: translateY(0px); } | |
} | |
.blob { | |
position: absolute; | |
width: 500px; | |
height: 500px; | |
background: linear-gradient(45deg, rgba(99, 102, 241, 0.1), rgba(139, 92, 246, 0.1)); | |
border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; | |
filter: blur(50px); | |
z-index: -1; | |
animation: blob-animate 20s linear infinite; | |
} | |
@keyframes blob-animate { | |
0% { transform: rotate(0deg) scale(1); } | |
50% { transform: rotate(180deg) scale(1.2); } | |
100% { transform: rotate(360deg) scale(1); } | |
} | |
.nav-link { | |
position: relative; | |
} | |
.nav-link::after { | |
content: ''; | |
position: absolute; | |
width: 0; | |
height: 2px; | |
bottom: -2px; | |
left: 0; | |
background: linear-gradient(90deg, #6366f1, #8b5cf6); | |
transition: width 0.3s ease; | |
} | |
.nav-link:hover::after { | |
width: 100%; | |
} | |
.timeline-item::before { | |
content: ''; | |
position: absolute; | |
width: 20px; | |
height: 20px; | |
border-radius: 50%; | |
background: linear-gradient(135deg, #6366f1, #8b5cf6); | |
left: -10px; | |
top: 0; | |
} | |
.timeline::before { | |
content: ''; | |
position: absolute; | |
width: 2px; | |
height: 100%; | |
background: rgba(255, 255, 255, 0.1); | |
left: 0; | |
top: 0; | |
} | |
.contact-input { | |
background: rgba(255, 255, 255, 0.05); | |
border: 1px solid rgba(255, 255, 255, 0.1); | |
transition: all 0.3s ease; | |
} | |
.contact-input:focus { | |
outline: none; | |
border-color: #6366f1; | |
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2); | |
} | |
.cursor-follower { | |
position: fixed; | |
width: 30px; | |
height: 30px; | |
border-radius: 50%; | |
background: rgba(99, 102, 241, 0.3); | |
pointer-events: none; | |
transform: translate(-50%, -50%); | |
z-index: 9999; | |
mix-blend-mode: screen; | |
transition: transform 0.1s ease; | |
} | |
.cursor-dot { | |
position: fixed; | |
width: 8px; | |
height: 8px; | |
border-radius: 50%; | |
background: #6366f1; | |
pointer-events: none; | |
transform: translate(-50%, -50%); | |
z-index: 9999; | |
transition: transform 0.05s ease; | |
} | |
</style> | |
</head> | |
<body> | |
<!-- Custom Cursor --> | |
<div class="cursor-follower"></div> | |
<div class="cursor-dot"></div> | |
<!-- Blob Background Elements --> | |
<div class="blob top-[-200px] left-[-200px]"></div> | |
<div class="blob bottom-[-200px] right-[-200px]"></div> | |
<!-- Navigation --> | |
<nav class="fixed w-full z-50 backdrop-blur-md bg-opacity-80 bg-[#0f172a] border-b border-gray-800"> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
<div class="flex justify-between h-16 items-center"> | |
<div class="flex-shrink-0 flex items-center"> | |
<span class="text-2xl font-bold gradient-text">Portfolio</span> | |
</div> | |
<div class="hidden md:block"> | |
<div class="ml-10 flex items-center space-x-4"> | |
<a href="#home" class="nav-link px-3 py-2 text-sm font-medium hover:text-indigo-400 transition">Home</a> | |
<a href="#about" class="nav-link px-3 py-2 text-sm font-medium hover:text-indigo-400 transition">About</a> | |
<a href="#skills" class="nav-link px-3 py-2 text-sm font-medium hover:text-indigo-400 transition">Skills</a> | |
<a href="#projects" class="nav-link px-3 py-2 text-sm font-medium hover:text-indigo-400 transition">Projects</a> | |
<a href="#experience" class="nav-link px-3 py-2 text-sm font-medium hover:text-indigo-400 transition">Experience</a> | |
<a href="#contact" class="nav-link px-3 py-2 text-sm font-medium hover:text-indigo-400 transition">Contact</a> | |
</div> | |
</div> | |
<div class="md:hidden"> | |
<button id="mobile-menu-button" class="p-2 rounded-md text-gray-400 hover:text-white focus:outline-none"> | |
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> | |
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path> | |
</svg> | |
</button> | |
</div> | |
</div> | |
</div> | |
<!-- Mobile menu --> | |
<div id="mobile-menu" class="hidden md:hidden bg-[#0f172a] border-t border-gray-800"> | |
<div class="px-2 pt-2 pb-3 space-y-1 sm:px-3"> | |
<a href="#home" class="block px-3 py-2 text-base font-medium hover:text-indigo-400 transition">Home</a> | |
<a href="#about" class="block px-3 py-2 text-base font-medium hover:text-indigo-400 transition">About</a> | |
<a href="#skills" class="block px-3 py-2 text-base font-medium hover:text-indigo-400 transition">Skills</a> | |
<a href="#projects" class="block px-3 py-2 text-base font-medium hover:text-indigo-400 transition">Projects</a> | |
<a href="#experience" class="block px-3 py-2 text-base font-medium hover:text-indigo-400 transition">Experience</a> | |
<a href="#contact" class="block px-3 py-2 text-base font-medium hover:text-indigo-400 transition">Contact</a> | |
</div> | |
</div> | |
</nav> | |
<!-- Hero Section --> | |
<section id="home" class="hero-bg min-h-screen flex items-center justify-center relative overflow-hidden"> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-24 md:py-32"> | |
<div class="flex flex-col md:flex-row items-center"> | |
<div class="md:w-1/2 mb-10 md:mb-0"> | |
<h1 class="text-4xl md:text-6xl font-bold mb-4">Hi, I'm <span class="gradient-text">Alex</span></h1> | |
<h2 class="text-2xl md:text-4xl font-semibold mb-6">Creative <span class="gradient-text">Developer</span></h2> | |
<p class="text-lg text-gray-300 mb-8 max-w-lg">I build exceptional digital experiences with modern technologies and creative solutions.</p> | |
<div class="flex space-x-4"> | |
<a href="#contact" class="px-6 py-3 bg-gradient-to-r from-indigo-500 to-purple-500 rounded-md font-medium hover:opacity-90 transition transform hover:scale-105">Hire Me</a> | |
<a href="#projects" class="px-6 py-3 border border-indigo-500 text-indigo-400 rounded-md font-medium hover:bg-indigo-500 hover:bg-opacity-10 transition transform hover:scale-105">View Work</a> | |
</div> | |
</div> | |
<div class="md:w-1/2 flex justify-center relative"> | |
<div class="w-64 h-64 md:w-80 md:h-80 rounded-full overflow-hidden border-4 border-indigo-500 relative floating"> | |
<img src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=774&q=80" alt="Profile" class="w-full h-full object-cover"> | |
</div> | |
<div class="absolute -bottom-5 -left-5 w-32 h-32 rounded-full bg-indigo-500 opacity-20 blur-3xl"></div> | |
<div class="absolute -top-5 -right-5 w-32 h-32 rounded-full bg-purple-500 opacity-20 blur-3xl"></div> | |
</div> | |
</div> | |
</div> | |
</section> | |
<!-- About Section --> | |
<section id="about" class="py-20 relative overflow-hidden"> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
<div class="text-center mb-16"> | |
<h2 class="text-3xl md:text-4xl font-bold mb-4">About <span class="gradient-text">Me</span></h2> | |
<div class="w-20 h-1 bg-gradient-to-r from-indigo-500 to-purple-500 mx-auto"></div> | |
</div> | |
<div class="flex flex-col md:flex-row items-center"> | |
<div class="md:w-1/3 mb-10 md:mb-0 flex justify-center"> | |
<div class="relative"> | |
<div class="w-64 h-64 rounded-lg overflow-hidden border-2 border-indigo-500 transform rotate-3"> | |
<img src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=774&q=80" alt="About" class="w-full h-full object-cover"> | |
</div> | |
<div class="absolute -z-10 -bottom-5 -right-5 w-full h-full rounded-lg border-2 border-purple-500 transform -rotate-3"></div> | |
</div> | |
</div> | |
<div class="md:w-2/3 md:pl-12"> | |
<h3 class="text-2xl font-semibold mb-4">Who am I?</h3> | |
<p class="text-gray-300 mb-6">I'm a passionate full-stack developer with 5+ years of experience creating modern web applications. I specialize in JavaScript technologies across the whole stack (React, Node.js, Express, MongoDB).</p> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8"> | |
<div> | |
<h4 class="font-medium mb-2 flex items-center"> | |
<span class="w-2 h-2 bg-indigo-500 rounded-full mr-2"></span> | |
<span>Name:</span> | |
</h4> | |
<p class="text-gray-300">Alex Johnson</p> | |
</div> | |
<div> | |
<h4 class="font-medium mb-2 flex items-center"> | |
<span class="w-2 h-2 bg-purple-500 rounded-full mr-2"></span> | |
<span>Email:</span> | |
</h4> | |
<p class="text-gray-300">alex@example.com</p> | |
</div> | |
<div> | |
<h4 class="font-medium mb-2 flex items-center"> | |
<span class="w-2 h-2 bg-indigo-500 rounded-full mr-2"></span> | |
<span>Age:</span> | |
</h4> | |
<p class="text-gray-300">28</p> | |
</div> | |
<div> | |
<h4 class="font-medium mb-2 flex items-center"> | |
<span class="w-2 h-2 bg-purple-500 rounded-full mr-2"></span> | |
<span>From:</span> | |
</h4> | |
<p class="text-gray-300">San Francisco, CA</p> | |
</div> | |
</div> | |
<div class="flex flex-wrap gap-4"> | |
<a href="#" class="px-6 py-2 bg-indigo-500 bg-opacity-10 border border-indigo-500 rounded-md font-medium hover:bg-opacity-20 transition">Download CV</a> | |
<a href="#" class="px-6 py-2 bg-transparent border border-gray-600 rounded-md font-medium hover:border-indigo-500 hover:text-indigo-400 transition">More About Me</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
</section> | |
<!-- Skills Section --> | |
<section id="skills" class="py-20 bg-gray-900 relative overflow-hidden"> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
<div class="text-center mb-16"> | |
<h2 class="text-3xl md:text-4xl font-bold mb-4">My <span class="gradient-text">Skills</span></h2> | |
<div class="w-20 h-1 bg-gradient-to-r from-indigo-500 to-purple-500 mx-auto"></div> | |
</div> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-12"> | |
<div> | |
<h3 class="text-xl font-semibold mb-6">Technical Skills</h3> | |
<div class="space-y-6"> | |
<div> | |
<div class="flex justify-between mb-2"> | |
<span class="font-medium">HTML/CSS</span> | |
<span class="text-indigo-400">95%</span> | |
</div> | |
<div class="skill-bar"> | |
<div class="skill-progress" data-width="95%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-2"> | |
<span class="font-medium">JavaScript</span> | |
<span class="text-indigo-400">90%</span> | |
</div> | |
<div class="skill-bar"> | |
<div class="skill-progress" data-width="90%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-2"> | |
<span class="font-medium">React</span> | |
<span class="text-indigo-400">85%</span> | |
</div> | |
<div class="skill-bar"> | |
<div class="skill-progress" data-width="85%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-2"> | |
<span class="font-medium">Node.js</span> | |
<span class="text-indigo-400">80%</span> | |
</div> | |
<div class="skill-bar"> | |
<div class="skill-progress" data-width="80%"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div> | |
<h3 class="text-xl font-semibold mb-6">Professional Skills</h3> | |
<div class="space-y-6"> | |
<div> | |
<div class="flex justify-between mb-2"> | |
<span class="font-medium">Communication</span> | |
<span class="text-purple-400">85%</span> | |
</div> | |
<div class="skill-bar"> | |
<div class="skill-progress" data-width="85%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-2"> | |
<span class="font-medium">Team Work</span> | |
<span class="text-purple-400">90%</span> | |
</div> | |
<div class="skill-bar"> | |
<div class="skill-progress" data-width="90%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-2"> | |
<span class="font-medium">Project Management</span> | |
<span class="text-purple-400">75%</span> | |
</div> | |
<div class="skill-bar"> | |
<div class="skill-progress" data-width="75%"></div> | |
</div> | |
</div> | |
<div> | |
<div class="flex justify-between mb-2"> | |
<span class="font-medium">Creativity</span> | |
<span class="text-purple-400">95%</span> | |
</div> | |
<div class="skill-bar"> | |
<div class="skill-progress" data-width="95%"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="mt-16 grid grid-cols-2 md:grid-cols-4 gap-6"> | |
<div class="bg-gray-800 bg-opacity-50 rounded-lg p-6 text-center card-hover"> | |
<div class="text-4xl text-indigo-400 mb-3"> | |
<i class="fas fa-code"></i> | |
</div> | |
<h4 class="font-semibold mb-2">Clean Code</h4> | |
<p class="text-gray-300 text-sm">Writing maintainable and efficient code</p> | |
</div> | |
<div class="bg-gray-800 bg-opacity-50 rounded-lg p-6 text-center card-hover"> | |
<div class="text-4xl text-purple-400 mb-3"> | |
<i class="fas fa-mobile-alt"></i> | |
</div> | |
<h4 class="font-semibold mb-2">Responsive Design</h4> | |
<p class="text-gray-300 text-sm">Perfect on all device sizes</p> | |
</div> | |
<div class="bg-gray-800 bg-opacity-50 rounded-lg p-6 text-center card-hover"> | |
<div class="text-4xl text-indigo-400 mb-3"> | |
<i class="fas fa-rocket"></i> | |
</div> | |
<h4 class="font-semibold mb-2">Fast Performance</h4> | |
<p class="text-gray-300 text-sm">Optimized for speed</p> | |
</div> | |
<div class="bg-gray-800 bg-opacity-50 rounded-lg p-6 text-center card-hover"> | |
<div class="text-4xl text-purple-400 mb-3"> | |
<i class="fas fa-headset"></i> | |
</div> | |
<h4 class="font-semibold mb-2">Great Support</h4> | |
<p class="text-gray-300 text-sm">Always available for help</p> | |
</div> | |
</div> | |
</div> | |
</section> | |
<!-- Projects Section --> | |
<section id="projects" class="py-20 relative overflow-hidden"> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
<div class="text-center mb-16"> | |
<h2 class="text-3xl md:text-4xl font-bold mb-4">My <span class="gradient-text">Projects</span></h2> | |
<div class="w-20 h-1 bg-gradient-to-r from-indigo-500 to-purple-500 mx-auto"></div> | |
</div> | |
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"> | |
<!-- Project 1 --> | |
<div class="bg-gray-800 bg-opacity-50 rounded-xl overflow-hidden border border-gray-700 card-hover"> | |
<div class="relative overflow-hidden h-48"> | |
<img src="https://images.unsplash.com/photo-1551288049-bebda4e38f71?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Project 1" class="w-full h-full object-cover transition-transform duration-500 hover:scale-110"> | |
<div class="absolute inset-0 bg-gradient-to-t from-black to-transparent opacity-70"></div> | |
<div class="absolute bottom-4 left-4"> | |
<span class="bg-indigo-500 text-white text-xs px-2 py-1 rounded">React</span> | |
<span class="bg-purple-500 text-white text-xs px-2 py-1 rounded ml-2">Node.js</span> | |
</div> | |
</div> | |
<div class="p-6"> | |
<h3 class="text-xl font-semibold mb-2">E-commerce Platform</h3> | |
<p class="text-gray-300 mb-4">A full-featured online store with payment integration and admin dashboard.</p> | |
<div class="flex justify-between items-center"> | |
<a href="#" class="text-indigo-400 hover:text-indigo-300 transition flex items-center"> | |
View Project <i class="fas fa-arrow-right ml-2"></i> | |
</a> | |
<a href="#" class="text-gray-400 hover:text-white transition"> | |
<i class="fab fa-github"></i> | |
</a> | |
</div> | |
</div> | |
</div> | |
<!-- Project 2 --> | |
<div class="bg-gray-800 bg-opacity-50 rounded-xl overflow-hidden border border-gray-700 card-hover"> | |
<div class="relative overflow-hidden h-48"> | |
<img src="https://images.unsplash.com/photo-1467232004584-a241de8bcf5d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1169&q=80" alt="Project 2" class="w-full h-full object-cover transition-transform duration-500 hover:scale-110"> | |
<div class="absolute inset-0 bg-gradient-to-t from-black to-transparent opacity-70"></div> | |
<div class="absolute bottom-4 left-4"> | |
<span class="bg-indigo-500 text-white text-xs px-2 py-1 rounded">React</span> | |
<span class="bg-purple-500 text-white text-xs px-2 py-1 rounded ml-2">Firebase</span> | |
</div> | |
</div> | |
<div class="p-6"> | |
<h3 class="text-xl font-semibold mb-2">Social Media App</h3> | |
<p class="text-gray-300 mb-4">A modern social platform with real-time updates and media sharing.</p> | |
<div class="flex justify-between items-center"> | |
<a href="#" class="text-indigo-400 hover:text-indigo-300 transition flex items-center"> | |
View Project <i class="fas fa-arrow-right ml-2"></i> | |
</a> | |
<a href="#" class="text-gray-400 hover:text-white transition"> | |
<i class="fab fa-github"></i> | |
</a> | |
</div> | |
</div> | |
</div> | |
<!-- Project 3 --> | |
<div class="bg-gray-800 bg-opacity-50 rounded-xl overflow-hidden border border-gray-700 card-hover"> | |
<div class="relative overflow-hidden h-48"> | |
<img src="https://images.unsplash.com/photo-1555421689-3f034debb7a6?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Project 3" class="w-full h-full object-cover transition-transform duration-500 hover:scale-110"> | |
<div class="absolute inset-0 bg-gradient-to-t from-black to-transparent opacity-70"></div> | |
<div class="absolute bottom-4 left-4"> | |
<span class="bg-indigo-500 text-white text-xs px-2 py-1 rounded">Vue.js</span> | |
<span class="bg-purple-500 text-white text-xs px-2 py-1 rounded ml-2">Laravel</span> | |
</div> | |
</div> | |
<div class="p-6"> | |
<h3 class="text-xl font-semibold mb-2">Task Management Tool</h3> | |
<p class="text-gray-300 mb-4">A collaborative workspace to organize projects and tasks with your team.</p> | |
<div class="flex justify-between items-center"> | |
<a href="#" class="text-indigo-400 hover:text-indigo-300 transition flex items-center"> | |
View Project <i class="fas fa-arrow-right ml-2"></i> | |
</a> | |
<a href="#" class="text-gray-400 hover:text-white transition"> | |
<i class="fab fa-github"></i> | |
</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="text-center mt-12"> | |
<a href="#" class="px-6 py-3 bg-gradient-to-r from-indigo-500 to-purple-500 rounded-md font-medium hover:opacity-90 transition transform hover:scale-105 inline-flex items-center"> | |
View All Projects <i class="fas fa-arrow-right ml-2"></i> | |
</a> | |
</div> | |
</div> | |
</section> | |
<!-- Experience Section --> | |
<section id="experience" class="py-20 bg-gray-900 relative overflow-hidden"> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
<div class="text-center mb-16"> | |
<h2 class="text-3xl md:text-4xl font-bold mb-4">My <span class="gradient-text">Experience</span></h2> | |
<div class="w-20 h-1 bg-gradient-to-r from-indigo-500 to-purple-500 mx-auto"></div> | |
</div> | |
<div class="relative pl-8 md:pl-16 timeline"> | |
<!-- Experience 1 --> | |
<div class="relative pb-12 timeline-item"> | |
<div class="bg-gray-800 bg-opacity-50 border border-gray-700 rounded-lg p-6 card-hover"> | |
<div class="flex flex-col md:flex-row md:justify-between md:items-center mb-4"> | |
<h3 class="text-xl font-semibold">Senior Frontend Developer</h3> | |
<span class="text-sm bg-indigo-500 bg-opacity-20 text-indigo-400 px-3 py-1 rounded-full">2021 - Present</span> | |
</div> | |
<h4 class="text-purple-400 mb-3">Tech Solutions Inc.</h4> | |
<p class="text-gray-300">Leading the frontend development team, implementing new features, optimizing performance, and mentoring junior developers.</p> | |
</div> | |
</div> | |
<!-- Experience 2 --> | |
<div class="relative pb-12 timeline-item"> | |
<div class="bg-gray-800 bg-opacity-50 border border-gray-700 rounded-lg p-6 card-hover"> | |
<div class="flex flex-col md:flex-row md:justify-between md:items-center mb-4"> | |
<h3 class="text-xl font-semibold">Frontend Developer</h3> | |
<span class="text-sm bg-purple-500 bg-opacity-20 text-purple-400 px-3 py-1 rounded-full">2018 - 2021</span> | |
</div> | |
<h4 class="text-indigo-400 mb-3">Digital Creations</h4> | |
<p class="text-gray-300">Developed responsive web applications using React, collaborated with designers to implement UI/UX improvements.</p> | |
</div> | |
</div> | |
<!-- Experience 3 --> | |
<div class="relative pb-12 timeline-item"> | |
<div class="bg-gray-800 bg-opacity-50 border border-gray-700 rounded-lg p-6 card-hover"> | |
<div class="flex flex-col md:flex-row md:justify-between md:items-center mb-4"> | |
<h3 class="text-xl font-semibold">Junior Web Developer</h3> | |
<span class="text-sm bg-indigo-500 bg-opacity-20 text-indigo-400 px-3 py-1 rounded-full">2016 - 2018</span> | |
</div> | |
<h4 class="text-purple-400 mb-3">Web Studio</h4> | |
<p class="text-gray-300">Built and maintained websites for clients, learned modern web development practices, and contributed to team projects.</p> | |
</div> | |
</div> | |
</div> | |
</div> | |
</section> | |
<!-- Contact Section --> | |
<section id="contact" class="py-20 relative overflow-hidden"> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
<div class="text-center mb-16"> | |
<h2 class="text-3xl md:text-4xl font-bold mb-4">Get In <span class="gradient-text">Touch</span></h2> | |
<div class="w-20 h-1 bg-gradient-to-r from-indigo-500 to-purple-500 mx-auto"></div> | |
</div> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-12"> | |
<div> | |
<h3 class="text-2xl font-semibold mb-6">Let's talk about your project</h3> | |
<p class="text-gray-300 mb-8">I'm interested in freelance opportunities - especially ambitious or large projects. However, if you have other request or question, don't hesitate to contact me.</p> | |
<div class="space-y-6"> | |
<div class="flex items-start"> | |
<div class="text-indigo-400 text-xl mr-4 mt-1"> | |
<i class="fas fa-map-marker-alt"></i> | |
</div> | |
<div> | |
<h4 class="font-medium mb-1">Location</h4> | |
<p class="text-gray-300">San Francisco, California</p> | |
</div> | |
</div> | |
<div class="flex items-start"> | |
<div class="text-purple-400 text-xl mr-4 mt-1"> | |
<i class="fas fa-envelope"></i> | |
</div> | |
<div> | |
<h4 class="font-medium mb-1">Email</h4> | |
<p class="text-gray-300">alex@example.com</p> | |
</div> | |
</div> | |
<div class="flex items-start"> | |
<div class="text-indigo-400 text-xl mr-4 mt-1"> | |
<i class="fas fa-phone-alt"></i> | |
</div> | |
<div> | |
<h4 class="font-medium mb-1">Phone</h4> | |
<p class="text-gray-300">+1 (555) 123-4567</p> | |
</div> | |
</div> | |
</div> | |
<div class="mt-8 flex space-x-4"> | |
<a href="#" class="w-10 h-10 rounded-full bg-indigo-500 flex items-center justify-center hover:bg-indigo-600 transition"> | |
<i class="fab fa-twitter"></i> | |
</a> | |
<a href="#" class="w-10 h-10 rounded-full bg-purple-500 flex items-center justify-center hover:bg-purple-600 transition"> | |
<i class="fab fa-linkedin-in"></i> | |
</a> | |
<a href="#" class="w-10 h-10 rounded-full bg-indigo-500 flex items-center justify-center hover:bg-indigo-600 transition"> | |
<i class="fab fa-github"></i> | |
</a> | |
<a href="#" class="w-10 h-10 rounded-full bg-purple-500 flex items-center justify-center hover:bg-purple-600 transition"> | |
<i class="fab fa-dribbble"></i> | |
</a> | |
</div> | |
</div> | |
<div> | |
<form class="space-y-6"> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> | |
<div> | |
<input type="text" placeholder="Your Name" class="w-full px-4 py-3 rounded-lg contact-input focus:outline-none"> | |
</div> | |
<div> | |
<input type="email" placeholder="Your Email" class="w-full px-4 py-3 rounded-lg contact-input focus:outline-none"> | |
</div> | |
</div> | |
<div> | |
<input type="text" placeholder="Subject" class="w-full px-4 py-3 rounded-lg contact-input focus:outline-none"> | |
</div> | |
<div> | |
<textarea placeholder="Your Message" rows="5" class="w-full px-4 py-3 rounded-lg contact-input focus:outline-none"></textarea> | |
</div> | |
<button type="submit" class="px-6 py-3 bg-gradient-to-r from-indigo-500 to-purple-500 rounded-md font-medium hover:opacity-90 transition w-full"> | |
Send Message <i class="fas fa-paper-plane ml-2"></i> | |
</button> | |
</form> | |
</div> | |
</div> | |
</div> | |
</section> | |
<!-- Footer --> | |
<footer class="py-10 bg-gray-900 border-t border-gray-800"> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
<div class="flex flex-col md:flex-row justify-between items-center"> | |
<div class="mb-4 md:mb-0"> | |
<span class="text-2xl font-bold gradient-text">Portfolio</span> | |
</div> | |
<div class="text-gray-400 text-sm"> | |
© 2023 Alex Johnson. All rights reserved. | |
</div> | |
<div class="mt-4 md:mt-0"> | |
<a href="#home" class="px-4 py-2 bg-indigo-500 bg-opacity-20 text-indigo-400 rounded-md font-medium hover:bg-opacity-30 transition"> | |
<i class="fas fa-arrow-up"></i> | |
</a> | |
</div> | |
</div> | |
</div> | |
</footer> | |
<script> | |
// Mobile menu toggle | |
document.getElementById('mobile-menu-button').addEventListener('click', function() { | |
const menu = document.getElementById('mobile-menu'); | |
menu.classList.toggle('hidden'); | |
}); | |
// Smooth scrolling for navigation links | |
document.querySelectorAll('a[href^="#"]').forEach(anchor => { | |
anchor.addEventListener('click', function (e) { | |
e.preventDefault(); | |
const targetId = this.getAttribute('href'); | |
const targetElement = document.querySelector(targetId); | |
if (targetElement) { | |
window.scrollTo({ | |
top: targetElement.offsetTop - 80, | |
behavior: 'smooth' | |
}); | |
// Close mobile menu if open | |
const mobileMenu = document.getElementById('mobile-menu'); | |
if (!mobileMenu.classList.contains('hidden')) { | |
mobileMenu.classList.add('hidden'); | |
} | |
} | |
}); | |
}); | |
// Animate skill bars on scroll | |
function animateSkillBars() { | |
const skillBars = document.querySelectorAll('.skill-progress'); | |
skillBars.forEach(bar => { | |
const width = bar.getAttribute('data-width'); | |
if (isElementInViewport(bar)) { | |
bar.style.width = width; | |
} | |
}); | |
} | |
function isElementInViewport(el) { | |
const rect = el.getBoundingClientRect(); | |
return ( | |
rect.top <= (window.innerHeight || document.documentElement.clientHeight) && | |
rect.bottom >= 0 | |
); | |
} | |
window.addEventListener('scroll', animateSkillBars); | |
window.addEventListener('load', animateSkillBars); | |
// Custom cursor | |
const cursorFollower = document.querySelector('.cursor-follower'); | |
const cursorDot = document.querySelector('.cursor-dot'); | |
document.addEventListener('mousemove', (e) => { | |
cursorFollower.style.left = e.clientX + 'px'; | |
cursorFollower.style.top = e.clientY + 'px'; | |
cursorDot.style.left = e.clientX + 'px'; | |
cursorDot.style.top = e.clientY + 'px'; | |
}); | |
// Add hover effects for cursor | |
document.querySelectorAll('a, button, .card-hover').forEach(el => { | |
el.addEventListener('mouseenter', () => { | |
cursorFollower.style.transform = 'translate(-50%, -50%) scale(2)'; | |
cursorFollower.style.opacity = '0.5'; | |
}); | |
el.addEventListener('mouseleave', () => { | |
cursorFollower.style.transform = 'translate(-50%, -50%) scale(1)'; | |
cursorFollower.style.opacity = '1'; | |
}); | |
}); | |
// Scroll reveal animation | |
function scrollReveal() { | |
const elements = document.querySelectorAll('.card-hover, .timeline-item, form, .flex.items-start'); | |
elements.forEach(el => { | |
if (isElementInViewport(el)) { | |
el.style.opacity = '1'; | |
el.style.transform = 'translateY(0)'; | |
} | |
}); | |
} | |
// Set initial state for scroll reveal | |
document.querySelectorAll('.card-hover, .timeline-item, form, .flex.items-start').forEach(el => { | |
el.style.opacity = '0'; | |
el.style.transform = 'translateY(20px)'; | |
el.style.transition = 'opacity 0.6s ease, transform 0.6s ease'; | |
}); | |
window.addEventListener('scroll', scrollReveal); | |
window.addEventListener('load', scrollReveal); | |
// Floating blob animation | |
const blobs = document.querySelectorAll('.blob'); | |
blobs.forEach((blob, index) => { | |
// Randomize initial position and animation duration | |
const duration = 15 + Math.random() * 15; | |
blob.style.animationDuration = `${duration}s`; | |
if (index === 0) { | |
blob.style.top = `${-100 + Math.random() * 50}px`; | |
blob.style.left = `${-100 + Math.random() * 50}px`; | |
} else { | |
blob.style.bottom = `${-100 + Math.random() * 50}px`; | |
blob.style.right = `${-100 + Math.random() * 50}px`; | |
} | |
}); | |
</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=freemanjrknox/portfolio" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
</html> |