Spaces:
Running
Running
| // Main Script for Silent Comet LDA Website | |
| document.addEventListener('DOMContentLoaded', function() { | |
| // Initialize Feather Icons | |
| if (typeof feather !== 'undefined') { | |
| feather.replace(); | |
| } | |
| // Tech Stack Data | |
| const techStack = [ | |
| 'Python', 'TensorFlow', 'PyTorch', 'React', 'Node.js', 'AWS', | |
| 'Azure', 'GCP', 'Kubernetes', 'Docker', 'TypeScript', 'Java', | |
| 'PostgreSQL', 'MongoDB', 'Redis', 'Nginx', 'Linux', 'Git', | |
| 'CI/CD', 'Jenkins', 'Terraform', 'Ansible', 'Puppet', 'Spark', | |
| 'Hadoop', 'Kafka', 'RabbitMQ', 'GraphQL', 'REST APIs', 'Selenium', | |
| 'Jest', 'Cypress', 'Wireshark', 'Burp Suite', 'Metasploit', | |
| 'Nmap', 'ELK Stack', 'Prometheus', 'Grafana', 'Splunk', | |
| 'OpenCV', 'spaCy', 'NLTK', 'Hugging Face', 'FastAPI', 'Django', | |
| 'Flask', 'Spring Boot', '.NET', 'Rust', 'Go' | |
| ]; | |
| // Populate Tech Stack | |
| const techContainer = document.getElementById('tech-stack-container'); | |
| if (techContainer) { | |
| techStack.sort(() => Math.random() - 0.5).forEach(tech => { | |
| const techItem = document.createElement('div'); | |
| techItem.className = 'tech-item'; | |
| techItem.textContent = tech; | |
| techContainer.appendChild(techItem); | |
| }); | |
| } | |
| // Service Card Animation | |
| const serviceCards = document.querySelectorAll('.service-card'); | |
| serviceCards.forEach(card => { | |
| card.addEventListener('mouseenter', function() { | |
| this.style.transform = 'translateY(-8px) scale(1.02)'; | |
| }); | |
| card.addEventListener('mouseleave', function() { | |
| this.style.transform = 'translateY(0) scale(1)'; | |
| }); | |
| }); | |
| // Smooth scrolling for anchor links | |
| document.querySelectorAll('a[href^="#"]').forEach(anchor => { | |
| anchor.addEventListener('click', function (e) { | |
| const href = this.getAttribute('href'); | |
| if (href !== '#') { | |
| e.preventDefault(); | |
| const targetElement = document.querySelector(href); | |
| if (targetElement) { | |
| targetElement.scrollIntoView({ | |
| behavior: 'smooth', | |
| block: 'start' | |
| }); | |
| } | |
| } | |
| }); | |
| }); | |
| // Parallax effect for hero section | |
| window.addEventListener('scroll', function() { | |
| const scrolled = window.pageYOffset; | |
| const heroSection = document.querySelector('.relative.min-h-screen'); | |
| if (heroSection) { | |
| const rate = scrolled * 0.3; | |
| heroSection.style.transform = `translate3d(0, ${rate}px, 0)`; | |
| } | |
| }); | |
| // Intersection Observer for animations | |
| const observerOptions = { | |
| threshold: 0.1, | |
| rootMargin: '0px 0px -50px 0px' | |
| }; | |
| const observer = new IntersectionObserver(function(entries) { | |
| entries.forEach(entry => { | |
| if (entry.isIntersecting) { | |
| entry.target.style.opacity = '1'; | |
| entry.target.style.transform = 'translateY(0)'; | |
| } | |
| }); | |
| }, observerOptions); | |
| // Observe service cards | |
| serviceCards.forEach(card => { | |
| card.style.opacity = '0'; | |
| card.style.transform = 'translateY(30px)'; | |
| card.style.transition = 'opacity 0.6s ease, transform 0.6s ease'; | |
| observer.observe(card); | |
| }); | |
| // Dynamic year for footer | |
| const yearElement = document.getElementById('current-year'); | |
| if (yearElement) { | |
| yearElement.textContent = new Date().getFullYear(); | |
| } | |
| }); |