|
|
<!DOCTYPE html> |
|
|
<html lang="en" class="scroll-smooth"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Portfolio | Creative Developer</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"> |
|
|
<script> |
|
|
tailwind.config = { |
|
|
darkMode: 'class', |
|
|
theme: { |
|
|
extend: { |
|
|
animation: { |
|
|
'fade-in': 'fadeIn 1s ease-in-out', |
|
|
'slide-up': 'slideUp 0.8s ease-out', |
|
|
'float': 'float 3s ease-in-out infinite', |
|
|
}, |
|
|
keyframes: { |
|
|
fadeIn: { |
|
|
'0%': { opacity: '0' }, |
|
|
'100%': { opacity: '1' }, |
|
|
}, |
|
|
slideUp: { |
|
|
'0%': { transform: 'translateY(20px)', opacity: '0' }, |
|
|
'100%': { transform: 'translateY(0)', opacity: '1' }, |
|
|
}, |
|
|
float: { |
|
|
'0%, 100%': { transform: 'translateY(0)' }, |
|
|
'50%': { transform: 'translateY(-10px)' }, |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
</script> |
|
|
<style> |
|
|
.gradient-text { |
|
|
background-clip: text; |
|
|
-webkit-background-clip: text; |
|
|
color: transparent; |
|
|
background-image: linear-gradient(90deg, #3b82f6, #8b5cf6); |
|
|
} |
|
|
|
|
|
.project-card:hover .project-overlay { |
|
|
opacity: 1; |
|
|
transform: translateY(0); |
|
|
} |
|
|
|
|
|
.skill-item:hover { |
|
|
transform: translateY(-5px); |
|
|
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); |
|
|
} |
|
|
|
|
|
.dark .gradient-text { |
|
|
background-image: linear-gradient(90deg, #60a5fa, #a78bfa); |
|
|
} |
|
|
|
|
|
@media (max-width: 768px) { |
|
|
.nav-menu { |
|
|
position: fixed; |
|
|
top: 0; |
|
|
right: -100%; |
|
|
width: 80%; |
|
|
height: 100vh; |
|
|
background-color: white; |
|
|
transition: 0.5s; |
|
|
z-index: 10; |
|
|
padding-top: 80px; |
|
|
} |
|
|
.nav-menu.active { |
|
|
right: 0; |
|
|
} |
|
|
.dark .nav-menu { |
|
|
background-color: #1f2937; |
|
|
} |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="bg-white dark:bg-gray-900 text-gray-800 dark:text-gray-200 transition-colors duration-300"> |
|
|
|
|
|
<header class="fixed w-full z-50 bg-white/80 dark:bg-gray-900/80 backdrop-blur-sm shadow-sm"> |
|
|
<div class="container mx-auto px-6 py-3 flex justify-between items-center"> |
|
|
<a href="#" class="text-2xl font-bold gradient-text">Bennison's Portfolio</a> |
|
|
<div class="flex items-center space-x-6"> |
|
|
<nav class="hidden md:flex space-x-8"> |
|
|
<a href="#home" class="hover:text-blue-500 dark:hover:text-blue-400 transition">Home</a> |
|
|
<a href="#about" class="hover:text-blue-500 dark:hover:text-blue-400 transition">About</a> |
|
|
<a href="#projects" class="hover:text-blue-500 dark:hover:text-blue-400 transition">Projects</a> |
|
|
<a href="#skills" class="hover:text-blue-500 dark:hover:text-blue-400 transition">Skills</a> |
|
|
<a href="#contact" class="hover:text-blue-500 dark:hover:text-blue-400 transition">Contact</a> |
|
|
</nav> |
|
|
|
|
|
<button id="theme-toggle" class="p-2 rounded-full hover:bg-gray-200 dark:hover:bg-gray-700 transition"> |
|
|
<i class="fas fa-moon dark:hidden"></i> |
|
|
<i class="fas fa-sun hidden dark:block"></i> |
|
|
</button> |
|
|
|
|
|
<button id="menu-toggle" class="md:hidden p-2 rounded-full hover:bg-gray-200 dark:hover:bg-gray-700 transition"> |
|
|
<i class="fas fa-bars"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="nav-menu" class="nav-menu md:hidden"> |
|
|
<div class="flex flex-col space-y-6 p-8"> |
|
|
<a href="#home" class="text-xl hover:text-blue-500 dark:hover:text-blue-400 transition">Home</a> |
|
|
<a href="#about" class="text-xl hover:text-blue-500 dark:hover:text-blue-400 transition">About</a> |
|
|
<a href="#projects" class="text-xl hover:text-blue-500 dark:hover:text-blue-400 transition">Projects</a> |
|
|
<a href="#skills" class="text-xl hover:text-blue-500 dark:hover:text-blue-400 transition">Skills</a> |
|
|
<a href="#contact" class="text-xl hover:text-blue-500 dark:hover:text-blue-400 transition">Contact</a> |
|
|
</div> |
|
|
</div> |
|
|
</header> |
|
|
|
|
|
|
|
|
<section id="home" class="min-h-[90vh] flex items-center pt-16"> |
|
|
<div class="container mx-auto px-6 py-16 flex flex-col md:flex-row items-center"> |
|
|
<div class="md:w-1/2 mb-12 md:mb-0 animate-fade-in"> |
|
|
<h1 class="text-4xl md:text-6xl font-bold mb-6"> |
|
|
Hi, I'm <span class="gradient-text">Bennison</span> |
|
|
</h1> |
|
|
<h2 class="text-2xl md:text-3xl font-semibold mb-6 animate-slide-up"> |
|
|
AI Engineer & Backend Specialist |
|
|
</h2> |
|
|
<p class="text-lg mb-8 text-gray-600 dark:text-gray-300 max-w-lg animate-slide-up"> |
|
|
I architect intelligent systems with Python, Node.js and Generative AI to solve complex problems. |
|
|
</p> |
|
|
<div class="flex space-x-4 animate-slide-up"> |
|
|
<a href="#projects" class="px-6 py-3 bg-blue-600 hover:bg-blue-700 text-white rounded-lg font-medium transition shadow-lg"> |
|
|
View My Work |
|
|
</a> |
|
|
<a href="#contact" class="px-6 py-3 border-2 border-blue-600 text-blue-600 hover:bg-blue-50 dark:hover:bg-gray-800 rounded-lg font-medium transition"> |
|
|
Contact Me |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
<div class="md:w-1/2 flex justify-center animate-float"> |
|
|
<div class="relative w-64 h-64 md:w-80 md:h-80 flex items-center justify-center rounded-full bg-gradient-to-br from-blue-500 to-purple-600 shadow-2xl"> |
|
|
<span class="text-white text-5xl md:text-7xl font-bold">BD</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section id="about" class="py-16 bg-gray-50 dark:bg-gray-800"> |
|
|
<div class="container mx-auto px-6"> |
|
|
<h2 class="text-3xl font-bold text-center mb-12 gradient-text">About Me</h2> |
|
|
|
|
|
<div class="flex flex-col md:flex-row items-center gap-8"> |
|
|
<div class="md:w-1/3 flex justify-center"> |
|
|
<div class="relative w-56 h-56 rounded-lg bg-gradient-to-br from-blue-400 to-indigo-600 shadow-xl flex items-center justify-center"> |
|
|
<span class="text-white text-4xl font-bold">AI</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="md:w-2/3"> |
|
|
<h3 class="text-2xl font-semibold mb-4">Who I Am</h3> |
|
|
<p class="text-gray-600 dark:text-gray-300 mb-6"> |
|
|
I'm a passionate AI Engineer with 3.5+ years of experience in backend development and generative AI systems. |
|
|
I specialize in Python, Node.js, and building RAG (Retrieval-Augmented Generation) architectures with Agentic AI workflows. |
|
|
</p> |
|
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8"> |
|
|
<div class="flex items-start space-x-4"> |
|
|
<div class="p-3 bg-blue-100 dark:bg-blue-900 rounded-full"> |
|
|
<i class="fas fa-code text-blue-600 dark:text-blue-300"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="font-semibold">Web Development</h4> |
|
|
<p class="text-gray-500 dark:text-gray-400 text-sm"> |
|
|
Building responsive and interactive web applications |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex items-start space-x-4"> |
|
|
<div class="p-3 bg-green-100 dark:bg-green-900 rounded-full"> |
|
|
<i class="fas fa-server text-green-600 dark:text-green-300"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="font-semibold">Backend Development</h4> |
|
|
<p class="text-gray-500 dark:text-gray-400 text-sm"> |
|
|
Designing scalable APIs and database architectures |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex items-start space-x-4"> |
|
|
<div class="p-3 bg-purple-100 dark:bg-purple-900 rounded-full"> |
|
|
<i class="fas fa-brain text-purple-600 dark:text-purple-300"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="font-semibold">Generative AI (RAG)</h4> |
|
|
<p class="text-gray-500 dark:text-gray-400 text-sm"> |
|
|
Building Retrieval-Augmented Generation systems |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex items-start space-x-4"> |
|
|
<div class="p-3 bg-indigo-100 dark:bg-indigo-900 rounded-full"> |
|
|
<i class="fas fa-robot text-indigo-600 dark:text-indigo-300"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="font-semibold">Agentic AI</h4> |
|
|
<p class="text-gray-500 dark:text-gray-400 text-sm"> |
|
|
Developing autonomous AI agents with reasoning capabilities |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<a href="https://linkedin.com/in/bennisondevadoss" target="_blank" class="inline-flex items-center px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition mr-4"> |
|
|
<i class="fab fa-linkedin-in mr-2"></i> LinkedIn |
|
|
</a> |
|
|
<a href="https://github.com/BennisonDevadoss" target="_blank" class="inline-flex items-center px-4 py-2 bg-gray-800 text-white rounded-lg hover:bg-gray-700 transition"> |
|
|
<i class="fab fa-github mr-2"></i> GitHub |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section id="projects" class="py-16"> |
|
|
<div class="container mx-auto px-6"> |
|
|
<h2 class="text-3xl font-bold text-center mb-4 gradient-text">My Projects</h2> |
|
|
<p class="text-center text-gray-600 dark:text-gray-300 max-w-2xl mx-auto mb-16"> |
|
|
Here are some of my recent projects. Each one was built to solve a specific problem or explore new technologies. |
|
|
</p> |
|
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"> |
|
|
|
|
|
<div class="project-card rounded-lg overflow-hidden shadow-lg hover:shadow-xl transition duration-300 relative"> |
|
|
<div class="relative h-52"> |
|
|
<img src="http://static.photos/technology/640x360/789" |
|
|
alt="Project 1" class="w-full h-full object-cover"> |
|
|
<div class="project-overlay absolute inset-0 bg-black/70 flex flex-col justify-center items-center opacity-0 transition duration-300 transform translate-y-4 p-6"> |
|
|
<h3 class="text-white text-xl font-bold mb-2">E-commerce Platform</h3> |
|
|
<p class="text-gray-300 text-sm mb-4 text-center"> |
|
|
A full-featured online store with payment integration and admin dashboard. |
|
|
</p> |
|
|
<div class="flex space-x-2"> |
|
|
<span class="px-2 py-1 bg-blue-600 text-white text-xs rounded">React</span> |
|
|
<span class="px-2 py-1 bg-green-600 text-white text-xs rounded">Node.js</span> |
|
|
<span class="px-2 py-1 bg-yellow-600 text-white text-xs rounded">MongoDB</span> |
|
|
</div> |
|
|
<div class="mt-4 flex space-x-4"> |
|
|
<a href="#" class="text-white hover:text-blue-300 transition"> |
|
|
<i class="fab fa-github"></i> |
|
|
</a> |
|
|
<a href="#" class="text-white hover:text-blue-300 transition"> |
|
|
<i class="fas fa-external-link-alt"></i> |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-4 bg-white dark:bg-gray-800"> |
|
|
<h3 class="font-semibold text-lg mb-2">E-commerce Platform</h3> |
|
|
<p class="text-gray-600 dark:text-gray-300 text-sm"> |
|
|
Online store with Stripe payment integration and admin dashboard. |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="project-card rounded-xl overflow-hidden shadow-lg hover:shadow-xl transition duration-300 relative"> |
|
|
<div class="relative h-60"> |
|
|
<img src="http://static.photos/technology/640x360/321" |
|
|
alt="Project 2" class="w-full h-full object-cover"> |
|
|
<div class="project-overlay absolute inset-0 bg-black/70 flex flex-col justify-center items-center opacity-0 transition duration-300 transform translate-y-4 p-6"> |
|
|
<h3 class="text-white text-xl font-bold mb-2">Task Management App</h3> |
|
|
<p class="text-gray-300 text-sm mb-4 text-center"> |
|
|
A collaborative task management tool with real-time updates. |
|
|
</p> |
|
|
<div class="flex space-x-2"> |
|
|
<span class="px-2 py-1 bg-blue-600 text-white text-xs rounded">React</span> |
|
|
<span class="px-2 py-1 bg-purple-600 text-white text-xs rounded">GraphQL</span> |
|
|
<span class="px-2 py-1 bg-green-600 text-white text-xs rounded">Firebase</span> |
|
|
</div> |
|
|
<div class="mt-4 flex space-x-4"> |
|
|
<a href="#" class="text-white hover:text-blue-300 transition"> |
|
|
<i class="fab fa-github"></i> |
|
|
</a> |
|
|
<a href="#" class="text-white hover:text-blue-300 transition"> |
|
|
<i class="fas fa-external-link-alt"></i> |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-4 bg-white dark:bg-gray-800"> |
|
|
<h3 class="font-semibold text-lg mb-2">Task Management App</h3> |
|
|
<p class="text-gray-600 dark:text-gray-300 text-sm"> |
|
|
Collaborative tool with real-time updates and team features. |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="project-card rounded-xl overflow-hidden shadow-lg hover:shadow-xl transition duration-300 relative"> |
|
|
<div class="relative h-60"> |
|
|
<img src="http://static.photos/technology/640x360/654" |
|
|
alt="Project 3" class="w-full h-full object-cover"> |
|
|
<div class="project-overlay absolute inset-0 bg-black/70 flex flex-col justify-center items-center opacity-0 transition duration-300 transform translate-y-4 p-6"> |
|
|
<h3 class="text-white text-xl font-bold mb-2">Social Media Dashboard</h3> |
|
|
<p class="text-gray-300 text-sm mb-4 text-center"> |
|
|
Analytics dashboard for tracking social media performance. |
|
|
</p> |
|
|
<div class="flex space-x-2"> |
|
|
<span class="px-2 py-1 bg-blue-600 text-white text-xs rounded">Vue.js</span> |
|
|
<span class="px-2 py-1 bg-green-600 text-white text-xs rounded">D3.js</span> |
|
|
<span class="px-2 py-1 bg-yellow-600 text-white text-xs rounded">Express</span> |
|
|
</div> |
|
|
<div class="mt-4 flex space-x-4"> |
|
|
<a href="#" class="text-white hover:text-blue-300 transition"> |
|
|
<i class="fab fa-github"></i> |
|
|
</a> |
|
|
<a href="#" class="text-white hover:text-blue-300 transition"> |
|
|
<i class="fas fa-external-link-alt"></i> |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-4 bg-white dark:bg-gray-800"> |
|
|
<h3 class="font-semibold text-lg mb-2">Social Media Dashboard</h3> |
|
|
<p class="text-gray-600 dark:text-gray-300 text-sm"> |
|
|
Analytics platform with data visualization for social metrics. |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="text-center mt-12"> |
|
|
<a href="#" class="px-6 py-3 border-2 border-blue-600 text-blue-600 hover:bg-blue-50 dark:hover:bg-gray-800 rounded-lg font-medium transition inline-flex items-center"> |
|
|
View All Projects |
|
|
<i class="fas fa-arrow-right ml-2"></i> |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section id="skills" class="py-16 bg-gray-50 dark:bg-gray-800"> |
|
|
<div class="container mx-auto px-6"> |
|
|
<h2 class="text-3xl font-bold text-center mb-4 gradient-text">My Skills</h2> |
|
|
<p class="text-center text-gray-600 dark:text-gray-300 max-w-2xl mx-auto mb-16"> |
|
|
I've worked with a variety of technologies in the web development world. |
|
|
</p> |
|
|
|
|
|
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-6"> |
|
|
|
|
|
<div class="skill-item p-6 bg-white dark:bg-gray-700 rounded-xl shadow-md hover:shadow-lg transition duration-300 flex flex-col items-center"> |
|
|
<div class="w-16 h-16 mb-4 flex items-center justify-center"> |
|
|
<i class="fab fa-python text-4xl text-blue-500"></i> |
|
|
</div> |
|
|
<h3 class="font-semibold">Python</h3> |
|
|
<div class="w-full bg-gray-200 dark:bg-gray-600 rounded-full h-2 mt-3"> |
|
|
<div class="bg-blue-500 h-2 rounded-full" style="width: 95%"></div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="skill-item p-6 bg-white dark:bg-gray-700 rounded-xl shadow-md hover:shadow-lg transition duration-300 flex flex-col items-center"> |
|
|
<div class="w-16 h-16 mb-4 flex items-center justify-center"> |
|
|
<i class="fab fa-node-js text-4xl text-green-500"></i> |
|
|
</div> |
|
|
<h3 class="font-semibold">Node.js</h3> |
|
|
<div class="w-full bg-gray-200 dark:bg-gray-600 rounded-full h-2 mt-3"> |
|
|
<div class="bg-green-500 h-2 rounded-full" style="width: 90%"></div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="skill-item p-6 bg-white dark:bg-gray-700 rounded-xl shadow-md hover:shadow-lg transition duration-300 flex flex-col items-center"> |
|
|
<div class="w-16 h-16 mb-4 flex items-center justify-center"> |
|
|
<i class="fas fa-robot text-4xl text-purple-500"></i> |
|
|
</div> |
|
|
<h3 class="font-semibold">Generative AI</h3> |
|
|
<div class="w-full bg-gray-200 dark:bg-gray-600 rounded-full h-2 mt-3"> |
|
|
<div class="bg-purple-500 h-2 rounded-full" style="width: 85%"></div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="skill-item p-6 bg-white dark:bg-gray-700 rounded-xl shadow-md hover:shadow-lg transition duration-300 flex flex-col items-center"> |
|
|
<div class="w-16 h-16 mb-4 flex items-center justify-center"> |
|
|
<i class="fas fa-database text-4xl text-blue-600"></i> |
|
|
</div> |
|
|
<h3 class="font-semibold">PostgreSQL</h3> |
|
|
<div class="w-full bg-gray-200 dark:bg-gray-600 rounded-full h-2 mt-3"> |
|
|
<div class="bg-blue-600 h-2 rounded-full" style="width: 90%"></div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="skill-item p-6 bg-white dark:bg-gray-700 rounded-xl shadow-md hover:shadow-lg transition duration-300 flex flex-col items-center"> |
|
|
<div class="w-16 h-16 mb-4 flex items-center justify-center"> |
|
|
<i class="fas fa-brain text-4xl text-pink-500"></i> |
|
|
</div> |
|
|
<h3 class="font-semibold">RAG Systems</h3> |
|
|
<div class="w-full bg-gray-200 dark:bg-gray-600 rounded-full h-2 mt-3"> |
|
|
<div class="bg-pink-500 h-2 rounded-full" style="width: 88%"></div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="skill-item p-6 bg-white dark:bg-gray-700 rounded-xl shadow-md hover:shadow-lg transition duration-300 flex flex-col items-center"> |
|
|
<div class="w-16 h-16 mb-4 flex items-center justify-center"> |
|
|
<i class="fas fa-code text-4xl text-indigo-500"></i> |
|
|
</div> |
|
|
<h3 class="font-semibold">FastAPI/NestJS</h3> |
|
|
<div class="w-full bg-gray-200 dark:bg-gray-600 rounded-full h-2 mt-3"> |
|
|
<div class="bg-indigo-500 h-2 rounded-full" style="width: 85%"></div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="mt-16"> |
|
|
<h3 class="text-xl font-semibold text-center mb-8">Workflow & Tools</h3> |
|
|
<div class="flex flex-wrap justify-center gap-4"> |
|
|
<div class="px-4 py-2 bg-gray-100 dark:bg-gray-700 rounded-full flex items-center"> |
|
|
<i class="fab fa-git-alt text-gray-700 dark:text-gray-300 mr-2"></i> |
|
|
<span>Git</span> |
|
|
</div> |
|
|
<div class="px-4 py-2 bg-gray-100 dark:bg-gray-700 rounded-full flex items-center"> |
|
|
<i class="fab fa-github text-gray-700 dark:text-gray-300 mr-2"></i> |
|
|
<span>GitHub</span> |
|
|
</div> |
|
|
<div class="px-4 py-2 bg-gray-100 dark:bg-gray-700 rounded-full flex items-center"> |
|
|
<i class="fab fa-figma text-gray-700 dark:text-gray-300 mr-2"></i> |
|
|
<span>Figma</span> |
|
|
</div> |
|
|
<div class="px-4 py-2 bg-gray-100 dark:bg-gray-700 rounded-full flex items-center"> |
|
|
<i class="fas fa-terminal text-gray-700 dark:text-gray-300 mr-2"></i> |
|
|
<span>VS Code</span> |
|
|
</div> |
|
|
<div class="px-4 py-2 bg-gray-100 dark:bg-gray-700 rounded-full flex items-center"> |
|
|
<i class="fab fa-npm text-gray-700 dark:text-gray-300 mr-2"></i> |
|
|
<span>npm</span> |
|
|
</div> |
|
|
<div class="px-4 py-2 bg-gray-100 dark:bg-gray-700 rounded-full flex items-center"> |
|
|
<i class="fab fa-docker text-gray-700 dark:text-gray-300 mr-2"></i> |
|
|
<span>Docker</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section id="contact" class="py-16"> |
|
|
<div class="container mx-auto px-6"> |
|
|
<h2 class="text-3xl font-bold text-center mb-4 gradient-text">Get In Touch</h2> |
|
|
<p class="text-center text-gray-600 dark:text-gray-300 max-w-2xl mx-auto mb-16"> |
|
|
Have a project in mind or want to discuss potential opportunities? Feel free to reach out! |
|
|
</p> |
|
|
|
|
|
<div class="flex flex-col lg:flex-row gap-12"> |
|
|
<div class="lg:w-1/2"> |
|
|
<form class="space-y-4"> |
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4"> |
|
|
<div> |
|
|
<label for="name" class="block text-sm font-medium mb-1">Name</label> |
|
|
<input type="text" id="name" class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-800 transition"> |
|
|
</div> |
|
|
<div> |
|
|
<label for="email" class="block text-sm font-medium mb-1">Email</label> |
|
|
<input type="email" id="email" class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-800 transition"> |
|
|
</div> |
|
|
</div> |
|
|
<div> |
|
|
<label for="subject" class="block text-sm font-medium mb-1">Subject</label> |
|
|
<input type="text" id="subject" class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-800 transition"> |
|
|
</div> |
|
|
<div> |
|
|
<label for="message" class="block text-sm font-medium mb-1">Message</label> |
|
|
<textarea id="message" rows="5" class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-800 transition"></textarea> |
|
|
</div> |
|
|
<button type="submit" class="px-6 py-3 bg-blue-600 hover:bg-blue-700 text-white rounded-lg font-medium transition shadow-lg w-full"> |
|
|
Send Message |
|
|
</button> |
|
|
</form> |
|
|
</div> |
|
|
|
|
|
<div class="lg:w-1/2"> |
|
|
<div class="bg-gray-50 dark:bg-gray-800 p-8 rounded-xl shadow-md h-full"> |
|
|
<h3 class="text-xl font-semibold mb-6">Contact Information</h3> |
|
|
|
|
|
<div class="space-y-6"> |
|
|
<div class="flex items-start space-x-4"> |
|
|
<div class="p-3 bg-blue-100 dark:bg-blue-900 rounded-full"> |
|
|
<i class="fas fa-map-marker-alt text-blue-600 dark:text-blue-300"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="font-medium">Location</h4> |
|
|
<p class="text-gray-600 dark:text-gray-300">Coimbatore, Tamil Nadu</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex items-start space-x-4"> |
|
|
<div class="p-3 bg-green-100 dark:bg-green-900 rounded-full"> |
|
|
<i class="fas fa-envelope text-green-600 dark:text-green-300"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="font-medium">Email</h4> |
|
|
<p class="text-gray-600 dark:text-gray-300">bennisondevadoss@gmail.com</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex items-start space-x-4"> |
|
|
<div class="p-3 bg-purple-100 dark:bg-purple-900 rounded-full"> |
|
|
<i class="fas fa-phone-alt text-purple-600 dark:text-purple-300"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="font-medium">Phone</h4> |
|
|
<p class="text-gray-600 dark:text-gray-300">+91 6379705181</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="mt-8"> |
|
|
<h4 class="font-medium mb-4">Follow Me</h4> |
|
|
<div class="flex space-x-4"> |
|
|
<a href="https://linkedin.com/in/bennisondevadoss" target="_blank" class="p-3 bg-gray-200 dark:bg-gray-700 rounded-full hover:bg-blue-100 dark:hover:bg-blue-900 transition"> |
|
|
<i class="fab fa-linkedin-in text-gray-700 dark:text-gray-300"></i> |
|
|
</a> |
|
|
<a href="https://github.com/BennisonDevadoss" target="_blank" class="p-3 bg-gray-200 dark:bg-gray-700 rounded-full hover:bg-blue-100 dark:hover:bg-blue-900 transition"> |
|
|
<i class="fab fa-github text-gray-700 dark:text-gray-300"></i> |
|
|
</a> |
|
|
<a href="https://medium.com/@bennisondevadoss" target="_blank" class="p-3 bg-gray-200 dark:bg-gray-700 rounded-full hover:bg-blue-100 dark:hover:bg-blue-900 transition"> |
|
|
<i class="fab fa-medium text-gray-700 dark:text-gray-300"></i> |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<footer class="bg-gray-100 dark:bg-gray-800 py-8"> |
|
|
<div class="container mx-auto px-6"> |
|
|
<div class="flex flex-col md:flex-row justify-between items-center"> |
|
|
<div class="mb-6 md:mb-0"> |
|
|
<a href="#" class="text-2xl font-bold gradient-text">Portfolio</a> |
|
|
<p class="text-gray-600 dark:text-gray-300 mt-2"> |
|
|
© 2023 My Portfolio. All rights reserved. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
<div class="flex space-x-6"> |
|
|
<a href="#home" class="text-gray-600 dark:text-gray-300 hover:text-blue-500 dark:hover:text-blue-400 transition">Home</a> |
|
|
<a href="#about" class="text-gray-600 dark:text-gray-300 hover:text-blue-500 dark:hover:text-blue-400 transition">About</a> |
|
|
<a href="#projects" class="text-gray-600 dark:text-gray-300 hover:text-blue-500 dark:hover:text-blue-400 transition">Projects</a> |
|
|
<a href="#contact" class="text-gray-600 dark:text-gray-300 hover:text-blue-500 dark:hover:text-blue-400 transition">Contact</a> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="border-t border-gray-200 dark:border-gray-700 mt-8 pt-8 text-center text-gray-500 dark:text-gray-400 text-sm"> |
|
|
<p>Made with <i class="fas fa-heart text-red-500"></i> by Bennison Devadoss</p> |
|
|
</div> |
|
|
</div> |
|
|
</footer> |
|
|
|
|
|
|
|
|
<button id="back-to-top" class="fixed bottom-8 right-8 p-3 bg-blue-600 text-white rounded-full shadow-lg opacity-0 invisible transition-all duration-300"> |
|
|
<i class="fas fa-arrow-up"></i> |
|
|
</button> |
|
|
|
|
|
<script> |
|
|
|
|
|
const themeToggle = document.getElementById('theme-toggle'); |
|
|
const html = document.documentElement; |
|
|
|
|
|
|
|
|
const savedTheme = localStorage.getItem('theme') || |
|
|
(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); |
|
|
|
|
|
|
|
|
if (savedTheme === 'dark') { |
|
|
html.classList.add('dark'); |
|
|
} else { |
|
|
html.classList.remove('dark'); |
|
|
} |
|
|
|
|
|
|
|
|
themeToggle.addEventListener('click', () => { |
|
|
html.classList.toggle('dark'); |
|
|
const theme = html.classList.contains('dark') ? 'dark' : 'light'; |
|
|
localStorage.setItem('theme', theme); |
|
|
}); |
|
|
|
|
|
|
|
|
const menuToggle = document.getElementById('menu-toggle'); |
|
|
const navMenu = document.getElementById('nav-menu'); |
|
|
|
|
|
menuToggle.addEventListener('click', () => { |
|
|
navMenu.classList.toggle('active'); |
|
|
}); |
|
|
|
|
|
|
|
|
document.querySelectorAll('#nav-menu a').forEach(link => { |
|
|
link.addEventListener('click', () => { |
|
|
navMenu.classList.remove('active'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
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' |
|
|
}); |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const backToTopButton = document.getElementById('back-to-top'); |
|
|
|
|
|
window.addEventListener('scroll', () => { |
|
|
if (window.pageYOffset > 300) { |
|
|
backToTopButton.classList.remove('opacity-0', 'invisible'); |
|
|
backToTopButton.classList.add('opacity-100', 'visible'); |
|
|
} else { |
|
|
backToTopButton.classList.remove('opacity-100', 'visible'); |
|
|
backToTopButton.classList.add('opacity-0', 'invisible'); |
|
|
} |
|
|
}); |
|
|
|
|
|
backToTopButton.addEventListener('click', () => { |
|
|
window.scrollTo({ |
|
|
top: 0, |
|
|
behavior: 'smooth' |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const animateOnScroll = () => { |
|
|
const elements = document.querySelectorAll('.animate-fade-in, .animate-slide-up, .animate-float'); |
|
|
|
|
|
const observer = new IntersectionObserver((entries) => { |
|
|
entries.forEach(entry => { |
|
|
if (entry.isIntersecting) { |
|
|
entry.target.classList.add('animate-fade-in', 'animate-slide-up', 'animate-float'); |
|
|
observer.unobserve(entry.target); |
|
|
} |
|
|
}); |
|
|
}, { |
|
|
threshold: 0.1 |
|
|
}); |
|
|
|
|
|
elements.forEach(element => { |
|
|
observer.observe(element); |
|
|
}); |
|
|
}; |
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', animateOnScroll); |
|
|
</script> |
|
|
</body> |
|
|
</html> |