save-1 / index.html
YUSAKRU's picture
Design an ultra-creative developer portfolio that looks like it belongs in a top design agency: LAYOUT CONCEPT: - Break traditional web conventions with asymmetric grid system - Overlapping sections using CSS Grid and absolute positioning - Diagonal cuts between sections using clip-path CSS - Geometric shapes as visual separators (triangles, circles, hexagons) - Content containers at various angles for dynamic visual interest VISUAL DESIGN: - Bold color palette: #ff6b6b (coral), #4ecdc4 (teal), #45b7d1 (blue), #96ceb4 (mint) - Typography mix: Playfair Display (serif) for large headings, Inter (sans) for body - High-contrast black and white photography with color overlays - Custom illustrated icons and hand-drawn elements - Duotone image effects using the brand color palette HERO SECTION: - Split diagonal layout: large portrait photo on left (60%), animated text on right (40%) - Photo: black and white with coral color overlay on hover - Text animations: glitch effects on name, color-changing job title, kinetic typography - Background: animated geometric shapes floating and rotating slowly - Interactive elements: mouse movement affects shape positions PROJECT SHOWCASE: - Masonry layout (Pinterest-style) with varying card heights - Projects as polaroid-style cards with drop shadows and slight rotations (-5° to +5°) - Handwritten fonts for project titles (Caveat or similar) - Each card: project image, handwritten title, tech stack as sketched icons - Hover effects: cards straighten and lift with 3D transforms - Click interaction: expand to full-screen overlay with project details - Categories: Web Design, Brand Identity, Digital Art, Code Experiments INTERACTIONS: - Parallax scrolling: background elements move at different speeds - Custom animated cursor: changes size and color based on hover targets - Smooth page transitions between sections using GSAP or similar - Micro-interactions: buttons squish on click, links underline on hover - Scroll-triggered animations: elements slide in from different directions CREATIVE ELEMENTS: - Hand-drawn doodles as navigation arrows and bullet points - Animated SVG illustrations that react to mouse proximity - Background: subtle video loop or animated gradient patterns - Custom loading screen with brand animation (geometric shapes forming logo) - Interactive "easter eggs" hidden throughout the site ABOUT SECTION: - Comic book style layout with speech bubbles for personal story - Illustrated timeline showing career progression as a visual journey - Interactive skill meters designed as hand-drawn progress bars - Personal photos in polaroid frames scattered around the content - "Fun facts" section with playful icons and animations CONTACT SECTION: - Creative form design: labels as handwritten notes, inputs as sketch boxes - Animated send button that transforms into a paper airplane - Contact info displayed as business card design with letterpress effect - Social media links as hand-drawn social icons with hover animations - Background: animated constellation connecting contact methods DESIGN DETAILS: - Torn paper edges between sections - Watercolor brush stroke backgrounds for text sections - Vintage postage stamp elements for project categories - Hand-lettered quotes and testimonials throughout - Grunge textures and distressed elements for artistic flair This should feel more like an interactive art installation than a traditional website! - Initial Deployment
32cb5a1 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Alex Morgan | Full-Stack Developer Portfolio</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://kit.fontawesome.com/a076d05399.js" crossorigin="anonymous"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;700&display=swap" rel="stylesheet">
<style>
:root {
--primary: #667eea;
--secondary: #764ba2;
--accent: #f093fb;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', sans-serif;
scroll-behavior: smooth;
background-color: #f9fafb;
color: #1f2937;
}
/* Hero Section Styling */
.hero {
height: 100vh;
background: linear-gradient(to right, #667eea, #764ba2);
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%23ffffff' fill-opacity='0.1' fill-rule='evenodd'/%3E%3C/svg%3E");
animation: float 15s infinite linear;
opacity: 0.4;
}
.code-snippet {
position: absolute;
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
padding: 10px 15px;
border-radius: 6px;
font-family: monospace;
font-size: 14px;
color: white;
opacity: 0.7;
animation: floatCode 20s infinite linear;
}
.typing-container {
min-height: 90px;
}
.typing-text {
font-size: 2.5rem;
font-weight: 500;
color: white;
border-right: 3px solid white;
animation: blink 0.7s infinite ease;
padding-right: 5px;
}
/* Navigation */
.nav-header {
backdrop-filter: blur(10px);
background: rgba(255, 255, 255, 0.85);
transition: all 0.3s ease;
}
.nav-header.scrolled {
background: rgba(255, 255, 255, 0.95);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
}
.mobile-menu {
transform: translateX(100%);
transition: transform 0.3s ease-out;
}
.mobile-menu.active {
transform: translateX(0);
}
/* Cards */
.project-card {
transition: all 0.3s ease;
border: 1px solid rgba(229, 231, 235, 0.8);
}
.project-card:hover {
transform: translateY(-8px);
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
border-color: var(--primary);
}
.project-image {
overflow: hidden;
border-radius: 12px 12px 0 0;
}
.project-image img {
transition: transform 0.4s ease;
}
.project-card:hover .project-image img {
transform: scale(1.05);
}
.tech-badge {
background-color: rgba(246, 246, 247, 0.8);
padding: 4px 12px;
border-radius: 20px;
font-size: 12px;
font-weight: 500;
display: inline-flex;
align-items: center;
gap: 6px;
}
/* Skills Section */
.skill-bar {
height: 8px;
border-radius: 4px;
background-color: #e5e7eb;
position: relative;
overflow: hidden;
}
.skill-progress {
position: absolute;
top: 0;
left: 0;
height: 100%;
border-radius: 4px;
transition: width 1.5s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.skill-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.07), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
/* Timeline */
.timeline {
position: relative;
}
.timeline::before {
content: '';
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
height: 100%;
width: 4px;
background: linear-gradient(to bottom, #667eea, #764ba2);
border-radius: 2px;
}
.timeline-item {
position: relative;
width: 50%;
padding-left: 50px;
}
.timeline-item:nth-child(odd) {
left: 0;
}
.timeline-item:nth-child(even) {
left: 50%;
padding-left: 0;
padding-right: 50px;
}
.timeline-item::before {
content: '';
position: absolute;
top: 30px;
width: 20px;
height: 20px;
border-radius: 50%;
background-color: var(--primary);
border: 4px solid white;
box-shadow: 0 0 0 2px var(--primary);
}
.timeline-item:nth-child(odd)::before {
right: -10px;
}
.timeline-item:nth-child(even)::before {
left: -10px;
}
.timeline-content {
transition: all 0.3s ease;
}
.timeline-content:hover {
transform: translateY(-5px);
box-shadow: 0 10px 25px -5px rgba(102, 126, 234, 0.15);
}
/* Contact Form */
.contact-section {
background: linear-gradient(to right, rgba(102, 126, 234, 0.03), rgba(118, 75, 162, 0.03));
}
.contact-input {
transition: all 0.2s ease;
border: 1px solid #e5e7eb;
}
.contact-input:focus {
border-color: var(--primary);
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.2);
}
.contact-photo {
border-radius: 20px;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
}
.social-link {
transition: all 0.2s ease;
}
.social-link:hover {
transform: translateY(-3px);
color: var(--primary);
}
/* Footer */
footer {
background: linear-gradient(to right, #667eea, #764ba2);
}
/* Animations */
@keyframes float {
0% {
transform: translate(0, 0);
}
50% {
transform: translate(10px, 10px);
}
100% {
transform: translate(0, 0);
}
}
@keyframes floatCode {
0% {
transform: translate(0, 0) rotate(0deg);
}
25% {
transform: translate(20px, 40px) rotate(5deg);
}
50% {
transform: translate(40px, 80px) rotate(0deg);
}
75% {
transform: translate(20px, 120px) rotate(-5deg);
}
100% {
transform: translate(0, 160px) rotate(0deg);
}
}
@keyframes blink {
from, to { border-color: transparent }
50% { border-color: white; }
}
.fade-in {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.fade-in.appear {
opacity: 1;
transform: translateY(0);
}
/* Responsive adjustments */
@media (max-width: 1024px) {
.timeline::before {
left: 30px;
}
.timeline-item {
width: 100%;
margin-bottom: 30px;
padding-left: 70px;
}
.timeline-item:nth-child(even) {
left: 0;
padding-right: 0;
}
.timeline-item:nth-child(odd)::before,
.timeline-item:nth-child(even)::before {
left: 20px;
}
}
@media (max-width: 768px) {
.hero-heading {
font-size: 2.5rem;
}
.typing-text {
font-size: 1.5rem;
}
.typing-container {
min-height: 60px;
}
.contact-wrapper {
flex-direction: column;
}
.contact-form, .contact-info {
width: 100% !important;
}
}
</style>
</head>
<body>
<!-- Navigation -->
<header class="nav-header fixed top-0 left-0 w-full z-50 py-4">
<div class="container mx-auto px-6 flex justify-between items-center">
<a href="#" class="text-2xl font-bold text-gray-900">AlexMorgan.dev</a>
<nav class="hidden md:flex space-x-10">
<a href="#about" class="text-gray-600 hover:text-primary font-medium nav-link">About</a>
<a href="#projects" class="text-gray-600 hover:text-primary font-medium nav-link">Projects</a>
<a href="#skills" class="text-gray-600 hover:text-primary font-medium nav-link">Skills</a>
<a href="#experience" class="text-gray-600 hover:text-primary font-medium nav-link">Experience</a>
<a href="#contact" class="text-gray-600 hover:text-primary font-medium nav-link">Contact</a>
</nav>
<button id="mobile-menu-btn" class="md:hidden text-gray-700">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path>
</svg>
</button>
</div>
</header>
<!-- Mobile Navigation -->
<div id="mobile-menu" class="mobile-menu fixed top-0 right-0 h-full w-64 bg-white shadow-xl z-50 p-6">
<div class="flex justify-end">
<button id="close-menu" class="text-gray-700">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
</svg>
</button>
</div>
<nav class="mt-10 flex flex-col space-y-6">
<a href="#about" class="text-gray-800 hover:text-primary font-medium nav-link">About</a>
<a href="#projects" class="text-gray-800 hover:text-primary font-link">Projects</a>
<a href="#skills" class="text-gray-800 hover:text-primary font-link">Skills</a>
<a href="#experience" class="text-gray-800 hover:text-primary font-link">Experience</a>
<a href="#contact" class="text-gray-800 hover:text-primary font-link">Contact</a>
</nav>
</div>
<!-- Hero Section -->
<section class="hero relative flex items-center justify-center overflow-hidden">
<!-- Floating code snippets -->
<div class="code-snippet" style="top: 15%; left: 5%;">const project = new SaaS();</div>
<div class="code-snippet" style="top: 25%; right: 10%;">function innovate() { return true; }</div>
<div class="code-snippet" style="top: 45%; left: 12%;">import { scalability } from 'cloud-solutions';</div>
<div class="code-snippet" style="top: 65%; right: 7%;">while (code) { optimize(); }</div>
<div class="code-snippet" style="top: 75%; left: 8%;">export default efficiency;</div>
<div class="container mx-auto px-6 relative z-10">
<div class="max-w-3xl mx-auto text-center">
<h1 class="hero-heading text-5xl md:text-6xl font-bold text-white mb-6">
Full-Stack Developer
</h1>
<div class="typing-container mb-10">
<span class="typing-text" id="typing-text">React Expert</span>
</div>
<div class="flex flex-col sm:flex-row justify-center gap-4">
<a href="#projects" class="bg-white text-primary px-8 py-4 rounded-lg font-semibold text-lg shadow-lg hover:bg-gray-100 transition duration-300 transform hover:-translate-y-1">
View My Work
</a>
<a href="#" class="bg-transparent border-2 border-white text-white px-8 py-4 rounded-lg font-semibold text-lg hover:bg-white hover:text-primary transition duration-300 transform hover:-translate-y-1">
Download Resume
</a>
</div>
</div>
</div>
</section>
<!-- Projects Section -->
<section id="projects" class="py-24 bg-gray-50">
<div class="container mx-auto px-6">
<h2 class="text-4xl font-bold text-center mb-16">Featured Projects</h2>
<div class="flex flex-wrap justify-center gap-3 mb-12">
<button class="bg-primary text-white px-5 py-2 rounded-lg font-medium">All</button>
<button class="bg-gray-200 text-gray-700 px-5 py-2 rounded-lg font-medium hover:bg-gray-300">React</button>
<button class="bg-gray-200 text-gray-700 px-5 py-2 rounded-lg font-medium hover:bg-gray-300">Node.js</button>
<button class="bg-gray-200 text-gray-700 px-5 py-2 rounded-lg font-medium hover:bg-gray-300">Python</button>
<button class="bg-gray-200 text-gray-700 px-5 py-2 rounded-lg font-medium hover:bg-gray-300">Full-Stack</button>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<!-- Project 1 -->
<div class="project-card fade-in bg-white rounded-xl overflow-hidden">
<div class="project-image">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-full h-48"></div>
</div>
<div class="p-6">
<h3 class="text-xl font-bold mb-2">SaaS Analytics Dashboard</h3>
<p class="text-gray-600 mb-4">Interactive dashboard for tracking business metrics with real-time data visualization.</p>
<div class="flex flex-wrap gap-2 mb-5">
<span class="tech-badge">React</span>
<span class="tech-badge">D3.js</span>
<span class="tech-badge">Node.js</span>
<span class="tech-badge">MongoDB</span>
</div>
<div class="flex gap-3">
<a href="#" class="flex-1 bg-primary text-white text-center py-2 rounded-lg font-medium hover:bg-blue-700 transition">Live Demo</a>
<a href="#" class="flex-1 bg-gray-100 text-gray-800 text-center py-2 rounded-lg font-medium hover:bg-gray-200 transition">GitHub</a>
</div>
</div>
</div>
<!-- Project 2 -->
<div class="project-card fade-in bg-white rounded-xl overflow-hidden">
<div class="project-image">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-full h-48"></div>
</div>
<div class="p-6">
<h3 class="text-xl font-bold mb-2">E-Commerce API Platform</h3>
<p class="text-gray-600 mb-4">Scalable e-commerce backend with payment processing and inventory management.</p>
<div class="flex flex-wrap gap-2 mb-5">
<span class="tech-badge">Node.js</span>
<span class="tech-badge">Express</span>
<span class="tech-badge">PostgreSQL</span>
<span class="tech-badge">Stripe API</span>
</div>
<div class="flex gap-3">
<a href="#" class="flex-1 bg-primary text-white text-center py-2 rounded-lg font-medium hover:bg-blue-700 transition">Live Demo</a>
<a href="#" class="flex-1 bg-gray-100 text-gray-800 text-center py-2 rounded-lg font-medium hover:bg-gray-200 transition">GitHub</a>
</div>
</div>
</div>
<!-- Project 3 -->
<div class="project-card fade-in bg-white rounded-xl overflow-hidden">
<div class="project-image">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-full h-48"></div>
</div>
<div class="p-6">
<h3 class="text-xl font-bold mb-2">AI Content Generator</h3>
<p class="text-gray-600 mb-4">GPT-3 powered content creation tool with customizable templates and outputs.</p>
<div class="flex flex-wrap gap-2 mb-5">
<span class="tech-badge">Python</span>
<span class="tech-badge">Django</span>
<span class="tech-badge">React</span>
<span class="tech-badge">OpenAI API</span>
</div>
<div class="flex gap-3">
<a href="#" class="flex-1 bg-primary text-white text-center py-2 rounded-lg font-medium hover:bg-blue-700 transition">Live Demo</a>
<a href="#" class="flex-1 bg-gray-100 text-gray-800 text-center py-2 rounded-lg font-medium hover:bg-gray-200 transition">GitHub</a>
</div>
</div>
</div>
<!-- Project 4 -->
<div class="project-card fade-in bg-white rounded-xl overflow-hidden">
<div class="project-image">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-full h-48"></div>
</div>
<div class="p-6">
<h3 class="text-xl font-bold mb-2">Cloud File Storage</h3>
<p class="text-gray-600 mb-4">Secure cloud storage solution with end-to-end encryption and file sharing.</p>
<div class="flex flex-wrap gap-2 mb-5">
<span class="tech-badge">AWS S3</span>
<span class="tech-badge">React</span>
<span class="tech-badge">Node.js</span>
<span class="tech-badge">MongoDB</span>
</div>
<div class="flex gap-3">
<a href="#" class="flex-1 bg-primary text-white text-center py-2 rounded-lg font-medium hover:bg-blue-700 transition">Live Demo</a>
<a href="#" class="flex-1 bg-gray-100 text-gray-800 text-center py-2 rounded-lg font-medium hover:bg-gray-200 transition">GitHub</a>
</div>
</div>
</div>
<!-- Project 5 -->
<div class="project-card fade-in bg-white rounded-xl overflow-hidden">
<div class="project-image">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-full h-48"></div>
</div>
<div class="p-6">
<h3 class="text-xl font-bold mb-2">Blockchain Explorer</h3>
<p class="text-gray-600 mb-4">Real-time visualization and analytics for blockchain transactions and networks.</p>
<div class="flex flex-wrap gap-2 mb-5">
<span class="tech-badge">Ethereum</span>
<span class="tech-badge">Web3.js</span>
<span class="tech-badge">React</span>
<span class="tech-badge">GraphQL</span>
</div>
<div class="flex gap-3">
<a href="#" class="flex-1 bg-primary text-white text-center py-2 rounded-lg font-medium hover:bg-blue-700 transition">Live Demo</a>
<a href="#" class="flex-1 bg-gray-100 text-gray-800 text-center py-2 rounded-lg font-medium hover:bg-gray-200 transition">GitHub</a>
</div>
</div>
</div>
<!-- Project 6 -->
<div class="project-card fade-in bg-white rounded-xl overflow-hidden">
<div class="project-image">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-full h-48"></div>
</div>
<div class="p-6">
<h3 class="text-xl font-bold mb-2">IoT Monitoring System</h3>
<p class="text-gray-600 mb-4">Real-time monitoring dashboard for IoT devices with alerting and analytics.</p>
<div class="flex flex-wrap gap-2 mb-5">
<span class="tech-badge">Python</span>
<span class="tech-badge">AWS IoT</span>
<span class="tech-badge">React</span>
<span class="tech-badge">MQTT</span>
</div>
<div class="flex gap-3">
<a href="#" class="flex-1 bg-primary text-white text-center py-2 rounded-lg font-medium hover:bg-blue-700 transition">Live Demo</a>
<a href="#" class="flex-1 bg-gray-100 text-gray-800 text-center py-2 rounded-lg font-medium hover:bg-gray-200 transition">GitHub</a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Skills Section -->
<section id="skills" class="py-24 bg-white">
<div class="container mx-auto px-6">
<h2 class="text-4xl font-bold text-center mb-16">Technical Expertise</h2>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-8">
<!-- Skill 1 -->
<div class="skill-card fade-in bg-white rounded-xl p-6 border border-gray-100 shadow-sm transition">
<div class="flex items-center gap-4 mb-4">
<div class="w-12 h-12 rounded-lg bg-blue-100 flex items-center justify-center">
<i class="fab fa-react text-blue-500 text-2xl"></i>
</div>
<div>
<h3 class="font-bold text-lg">React</h3>
<p class="text-gray-500 text-sm">4 years experience</p>
</div>
</div>
<div class="mt-4">
<div class="flex justify-between mb-1">
<span class="text-sm font-medium">Advanced</span>
<span class="text-sm">95%</span>
</div>
<div class="skill-bar">
<div class="skill-progress bg-blue-500 w-0"></div>
</div>
</div>
</div>
<!-- Skill 2 -->
<div class="skill-card fade-in bg-white rounded-xl p-6 border border-gray-100 shadow-sm transition">
<div class="flex items-center gap-4 mb-4">
<div class="w-12 h-12 rounded-lg bg-green-100 flex items-center justify-center">
<i class="fab fa-node-js text-green-500 text-2xl"></i>
</div>
<div>
<h3 class="font-bold text-lg">Node.js</h3>
<p class="text-gray-500 text-sm">3 years experience</p>
</div>
</div>
<div class="mt-4">
<div class="flex justify-between mb-1">
<span class="text-sm font-medium">Expert</span>
<span class="text-sm">90%</span>
</div>
<div class="skill-bar">
<div class="skill-progress bg-green-500 w-0"></div>
</div>
</div>
</div>
<!-- Skill 3 -->
<div class="skill-card fade-in bg-white rounded-xl p-6 border border-gray-100 shadow-sm transition">
<div class="flex items-center gap-4 mb-4">
<div class="w-12 h-12 rounded-lg bg-yellow-100 flex items-center justify-center">
<i class="fab fa-python text-yellow-500 text-2xl"></i>
</div>
<div>
<h3 class="font-bold text-lg">Python</h3>
<p class="text-gray-500 text-sm">2 years experience</p>
</div>
</div>
<div class="mt-4">
<div class="flex justify-between mb-1">
<span class="text-sm font-medium">Proficient</span>
<span class="text-sm">85%</span>
</div>
<div class="skill-bar">
<div class="skill-progress bg-yellow-500 w-0"></div>
</div>
</div>
</div>
<!-- Skill 4 -->
<div class="skill-card fade-in bg-white rounded-xl p-6 border border-gray-100 shadow-sm transition">
<div class="flex items-center gap-4 mb-4">
<div class="w-12 h-12 rounded-lg bg-orange-100 flex items-center justify-center">
<i class="fab fa-aws text-orange-500 text-2xl"></i>
</div>
<div>
<h3 class="font-bold text-lg">AWS</h3>
<p class="text-gray-500 text-sm">3 years experience</p>
</div>
</div>
<div class="mt-4">
<div class="flex justify-between mb-1">
<span class="text-sm font-medium">Advanced</span>
<span class="text-sm">92%</span>
</div>
<div class="skill-bar">
<div class="skill-progress bg-orange-500 w-0"></div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Experience Section -->
<section id="experience" class="py-24 bg-gray-50">
<div class="container mx-auto px-6">
<h2 class="text-4xl font-bold text-center mb-16">Professional Journey</h2>
<div class="timeline relative">
<!-- Experience 1 -->
<div class="timeline-item fade-in mb-16">
<div class="timeline-content bg-white rounded-xl p-7 shadow-sm border border-gray-100">
<div class="flex items-start gap-5 mb-4">
<div class="w-16 h-16 rounded-full bg-gray-200 border-2 border-dashed flex-shrink-0"></div>
<div>
<h3 class="font-bold text-xl">Senior Full-Stack Developer</h3>
<p class="text-primary font-medium">InnovateX, San Francisco</p>
<p class="text-gray-500 text-sm">Jan 2021 - Present</p>
</div>
</div>
<ul class="list-disc pl-5 space-y-2 text-gray-600">
<li>Led development of SaaS platform serving 50k+ monthly active users</li>
<li>Architected microservices infrastructure reducing server costs by 40%</li>
<li>Implemented CI/CD pipeline reducing deployment time by 75%</li>
</ul>
</div>
</div>
<!-- Experience 2 -->
<div class="timeline-item fade-in mb-16">
<div class="timeline-content bg-white rounded-xl p-7 shadow-sm border border-gray-100">
<div class="flex items-start gap-5 mb-4">
<div class="w-16 h-16 rounded-full bg-gray-200 border-2 border-dashed flex-shrink-0"></div>
<div>
<h3 class="font-bold text-xl">Backend Engineer</h3>
<p class="text-primary font-medium">TechGrowth Labs, Palo Alto</p>
<p class="text-gray-500 text-sm">Mar 2019 - Dec 2020</p>
</div>
</div>
<ul class="list-disc pl-5 space-y-2 text-gray-600">
<li>Developed RESTful APIs serving 1M+ requests daily</li>
<li>Optimized database queries reducing response times by 60%</li>
<li>Implemented real-time data processing with Kafka</li>
</ul>
</div>
</div>
<!-- Experience 3 -->
<div class="timeline-item fade-in mb-16">
<div class="timeline-content bg-white rounded-xl p-7 shadow-sm border border-gray-100">
<div class="flex items-start gap-5 mb-4">
<div class="w-16 h-16 rounded-full bg-gray-200 border-2 border-dashed flex-shrink-0"></div>
<div>
<h3 class="font-bold text-xl">Frontend Developer</h3>
<p class="text-primary font-medium">Digital Solutions Inc., San Jose</p>
<p class="text-gray-500 text-sm">Jun 2017 - Feb 2019</p>
</div>
</div>
<ul class="list-disc pl-5 space-y-2 text-gray-600">
<li>Built responsive UI components using React and Redux</li>
<li>Improved application performance by 45% through code optimization</li>
<li>Mentored junior developers in frontend best practices</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- Contact Section -->
<section id="contact" class="contact-section py-24">
<div class="container mx-auto px-6">
<h2 class="text-4xl font-bold text-center mb-16">Let's Connect</h2>
<div class="contact-wrapper max-w-6xl mx-auto flex gap-12">
<div class="contact-form fade-in w-[60%]">
<form class="bg-white rounded-xl p-8 shadow-sm">
<div class="mb-6">
<label class="block text-gray-700 mb-2" for="name">Full Name</label>
<input type="text" id="name" class="contact-input w-full px-4 py-3 rounded-lg border focus:outline-none focus:ring-1">
</div>
<div class="mb-6">
<label class="block text-gray-700 mb-2" for="email">Email Address</label>
<input type="email" id="email" class="contact-input w-full px-4 py-3 rounded-lg border focus:outline-none focus:ring-1">
</div>
<div class="mb-6">
<label class="block text-gray-700 mb-2" for="project">Project Type</label>
<select id="project" class="contact-input w-full px-4 py-3 rounded-lg border focus:outline-none focus:ring-1">
<option value="">Select a project type</option>
<option value="web">Web Development</option>
<option value="mobile">Mobile App</option>
<option value="consulting">Consulting</option>
<option value="other">Other</option>
</select>
</div>
<div class="mb-6">
<label class="block text-gray-700 mb-2" for="message">Message</label>
<textarea id="message" rows="5" class="contact-input w-full px-4 py-3 rounded-lg border focus:outline-none focus:ring-1"></textarea>
</div>
<button type="submit" class="w-full bg-primary text-white py-3 rounded-lg font-semibold text-lg hover:bg-blue-700 transition transform hover:-translate-y-1">
Send Message
</button>
</form>
</div>
<div class="contact-info fade-in w-[40%]">
<div class="bg-white rounded-xl px-8 py-10 shadow-sm h-full">
<div class="flex justify-center mb-8">
<div class="contact-photo w-40 h-40 bg-gray-200 border-2 border-dashed rounded-full"></div>
</div>
<div class="space-y-5">
<div class="flex items-start gap-4">
<i class="fas fa-map-marker-alt text-primary mt-1"></i>
<div>
<h4 class="font-bold text-gray-900">Location</h4>
<p class="text-gray-600">San Francisco, California</p>
</div>
</div>
<div class="flex items-start gap-4">
<i class="fas fa-envelope text-primary mt-1"></i>
<div>
<h4 class="font-bold text-gray-900">Email</h4>
<p class="text-gray-600">[email protected]</p>
</div>
</div>
<div class="pt-6">
<h4 class="font-bold text-gray-900 mb-4">Connect with me</h4>
<div class="flex gap-4">
<a href="#" class="social-link text-gray-700 text-xl hover:text-primary">
<i class="fab fa-linkedin"></i>
</a>
<a href="#" class="social-link text-gray-700 text-xl hover:text-primary">
<i class="fab fa-github"></i>
</a>
<a href="#" class="social-link text-gray-700 text-xl hover:text-primary">
<i class="fab fa-twitter"></i>
</a>
<a href="#" class="social-link text-gray-700 text-xl hover:text-primary">
<i class="fab fa-dev"></i>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="py-12 text-white">
<div class="container mx-auto px-6 text-center">
<p class="text-xl font-bold mb-4">Alex Morgan</p>
<p class="opacity-80 mb-8">Full-Stack Developer specializing in modern web technologies and scalable solutions</p>
<div class="flex justify-center gap-6 mb-8">
<a href="#" class="opacity-80 hover:opacity-100"><i class="fab fa-linkedin text-xl"></i></a>
<a href="#" class="opacity-80 hover:opacity-100"><i class="fab fa-github text-xl"></i></a>
<a href="#" class="opacity-80 hover:opacity-100"><i class="fab fa-twitter text-xl"></i></a>
<a href="#" class="opacity-80 hover:opacity-100"><i class="fab fa-dev text-xl"></i></a>
</div>
<p class="opacity-60 text-sm">© 2023 Alex Morgan. All rights reserved.</p>
</div>
</footer>
<script>
// Mobile menu toggle
const mobileMenuBtn = document.getElementById('mobile-menu-btn');
const closeMenuBtn = document.getElementById('close-menu');
const mobileMenu = document.getElementById('mobile-menu');
mobileMenuBtn.addEventListener('click', () => {
mobileMenu.classList.add('active');
});
closeMenuBtn.addEventListener('click', () => {
mobileMenu.classList.remove('active');
});
// Close mobile menu when clicking on a link
document.querySelectorAll('.mobile-menu a').forEach(link => {
link.addEventListener('click', () => {
mobileMenu.classList.remove('active');
});
});
// Typing effect
const typingText = document.getElementById('typing-text');
const texts = ["React Expert", "Node.js Developer", "AWS Specialist"];
let textIndex = 0;
let charIndex = 0;
let isDeleting = false;
let typingSpeed = 100;
function type() {
const currentText = texts[textIndex];
if (isDeleting) {
// Delete character
typingText.textContent = currentText.substring(0, charIndex - 1);
charIndex--;
typingSpeed = 50;
} else {
// Type character
typingText.textContent = currentText.substring(0, charIndex + 1);
charIndex++;
typingSpeed = 150;
}
// Check if text is fully typed or deleted
if (!isDeleting && charIndex === currentText.length) {
// Pause at end of typing
typingSpeed = 2000;
isDeleting = true;
} else if (isDeleting && charIndex === 0) {
// Move to next text after deleting
isDeleting = false;
textIndex++;
if (textIndex === texts.length) {
textIndex = 0;
}
}
setTimeout(type, typingSpeed);
}
// Start typing effect
setTimeout(type, 1000);
// Active nav link on scroll
const sections = document.querySelectorAll('section');
const navLinks = document.querySelectorAll('.nav-link');
window.addEventListener('scroll', () => {
let current = '';
sections.forEach(section => {
const sectionTop = section.offsetTop;
const sectionHeight = section.clientHeight;
if (pageYOffset >= sectionTop - 300) {
current = section.getAttribute('id');
}
});
navLinks.forEach(link => {
link.classList.remove('text-primary');
if (link.getAttribute('href').substring(1) === current) {
link.classList.add('text-primary');
}
});
// Add scrolled class to header
const header = document.querySelector('.nav-header');
if (window.scrollY > 100) {
header.classList.add('scrolled');
} else {
header.classList.remove('scrolled');
}
});
// Fade in animations on scroll
const fadeElements = document.querySelectorAll('.fade-in');
const fadeInObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('appear');
// Animate skill progress bars
if (entry.target.classList.contains('skill-card')) {
const progressBar = entry.target.querySelector('.skill-progress');
const width = progressBar.nextElementSibling.textContent;
setTimeout(() => {
progressBar.style.width = width;
}, 300);
}
}
});
}, {
threshold: 0.1
});
fadeElements.forEach(element => {
fadeInObserver.observe(element);
});
</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=YUSAKRU/save-1" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>