undefined / index.html
bennison's picture
Manual changes saved
bdc485e verified
<!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/Navigation -->
<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>
<!-- Mobile Menu -->
<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>
<!-- Hero Section -->
<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>
<!-- About 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>
<!-- Projects 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">
<!-- Project 1 -->
<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>
<!-- Project 2 -->
<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>
<!-- Project 3 -->
<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>
<!-- Skills 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">
<!-- Skill 1 -->
<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>
<!-- Skill 2 -->
<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>
<!-- Skill 3 -->
<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>
<!-- Skill 4 -->
<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>
<!-- Skill 5 -->
<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>
<!-- Skill 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="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>
<!-- Contact 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 -->
<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>
<!-- Back to Top Button -->
<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>
// Theme Toggle
const themeToggle = document.getElementById('theme-toggle');
const html = document.documentElement;
// Check for saved theme preference or use preferred color scheme
const savedTheme = localStorage.getItem('theme') ||
(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
// Apply the saved theme
if (savedTheme === 'dark') {
html.classList.add('dark');
} else {
html.classList.remove('dark');
}
// Toggle theme on button click
themeToggle.addEventListener('click', () => {
html.classList.toggle('dark');
const theme = html.classList.contains('dark') ? 'dark' : 'light';
localStorage.setItem('theme', theme);
});
// Mobile Menu Toggle
const menuToggle = document.getElementById('menu-toggle');
const navMenu = document.getElementById('nav-menu');
menuToggle.addEventListener('click', () => {
navMenu.classList.toggle('active');
});
// Close mobile menu when clicking on a link
document.querySelectorAll('#nav-menu a').forEach(link => {
link.addEventListener('click', () => {
navMenu.classList.remove('active');
});
});
// Smooth scrolling for anchor 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'
});
}
});
});
// Back to Top Button
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'
});
});
// Intersection Observer for animations
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);
});
};
// Initialize animations when DOM is loaded
document.addEventListener('DOMContentLoaded', animateOnScroll);
</script>
</body>
</html>