cam / index.html
kamioll999's picture
Add 3 files
7966c83 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wedding Groove AI - Your Virtual Wedding DJ</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://kit.fontawesome.com/a076d05399.js" crossorigin="anonymous"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Poppins:wght@300;400;600&display=swap');
body {
font-family: 'Poppins', sans-serif;
background-color: #faf7f2;
}
.title-font {
font-family: 'Playfair Display', serif;
}
.gradient-bg {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
}
.dance-floor {
background: repeating-linear-gradient(
45deg,
#fff,
#fff 10px,
#f8f8f8 10px,
#f8f8f8 20px
);
animation: danceLights 10s infinite alternate;
}
@keyframes danceLights {
0% { box-shadow: 0 0 10px rgba(255,105,180,0.5); }
25% { box-shadow: 0 0 20px rgba(255,215,0,0.5); }
50% { box-shadow: 0 0 15px rgba(0,191,255,0.5); }
75% { box-shadow: 0 0 25px rgba(138,43,226,0.5); }
100% { box-shadow: 0 0 30px rgba(50,205,50,0.5); }
}
.equalizer-bar {
animation: equalize 1.5s infinite ease-in-out;
transform-origin: bottom;
}
.equalizer-bar:nth-child(1) { animation-delay: 0.1s; height: 20%; }
.equalizer-bar:nth-child(2) { animation-delay: 0.3s; height: 50%; }
.equalizer-bar:nth-child(3) { animation-delay: 0.6s; height: 30%; }
.equalizer-bar:nth-child(4) { animation-delay: 0.2s; height: 70%; }
.equalizer-bar:nth-child(5) { animation-delay: 0.4s; height: 40%; }
@keyframes equalize {
0%, 100% { transform: scaleY(1); }
50% { transform: scaleY(0.5); }
}
.song-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}
.pulse-animation {
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
</style>
</head>
<body class="min-h-screen gradient-bg">
<div class="container mx-auto px-4 py-8">
<!-- Header -->
<header class="flex flex-col items-center mb-12">
<div class="flex items-center justify-center mb-6">
<div class="w-16 h-16 rounded-full bg-white shadow-lg flex items-center justify-center mr-4">
<i class="fas fa-music text-3xl text-pink-500"></i>
</div>
<h1 class="title-font text-4xl md:text-5xl font-bold text-gray-800">Wedding Groove AI</h1>
</div>
<p class="text-lg text-gray-600 max-w-2xl text-center">
Your intelligent virtual DJ that adapts music in real-time based on dance floor activity
</p>
</header>
<!-- Main Content -->
<main class="grid grid-cols-1 lg:grid-cols-3 gap-8">
<!-- Dance Floor Camera -->
<div class="lg:col-span-2 bg-white rounded-2xl shadow-xl overflow-hidden">
<div class="p-4 bg-gray-800 flex items-center">
<div class="flex space-x-2 mr-4">
<div class="w-3 h-3 rounded-full bg-red-500"></div>
<div class="w-3 h-3 rounded-full bg-yellow-500"></div>
<div class="w-3 h-3 rounded-full bg-green-500"></div>
</div>
<p class="text-white text-sm">Live Dance Floor Camera</p>
</div>
<div class="dance-floor h-96 relative overflow-hidden flex items-center justify-center">
<div class="absolute inset-0 flex items-center justify-center">
<div class="text-center p-6 bg-white bg-opacity-90 rounded-xl shadow-lg max-w-md mx-auto">
<i class="fas fa-video text-4xl text-gray-400 mb-4"></i>
<h3 class="text-xl font-semibold text-gray-700 mb-2">Live Camera Feed</h3>
<p class="text-gray-500 mb-4">Connect your camera to analyze dance floor activity</p>
<button class="bg-pink-500 hover:bg-pink-600 text-white px-6 py-2 rounded-full font-medium transition-all">
Connect Camera
</button>
</div>
</div>
<!-- Dance floor animation -->
<div class="absolute bottom-0 left-0 right-0 h-16 bg-gradient-to-t from-black to-transparent opacity-20"></div>
</div>
<div class="p-4 bg-gray-100 flex justify-between items-center">
<div>
<p class="text-sm text-gray-600">Dance floor analysis:</p>
<p class="font-medium">Active: <span class="text-green-600">Analyzing...</span></p>
</div>
<div class="flex items-center">
<div class="flex space-x-1 h-8 mr-3">
<div class="equalizer-bar w-2 bg-pink-500 rounded-t"></div>
<div class="equalizer-bar w-2 bg-purple-500 rounded-t"></div>
<div class="equalizer-bar w-2 bg-blue-500 rounded-t"></div>
<div class="equalizer-bar w-2 bg-green-500 rounded-t"></div>
<div class="equalizer-bar w-2 bg-yellow-500 rounded-t"></div>
</div>
<span class="text-sm font-medium">AI Processing</span>
</div>
</div>
</div>
<!-- Control Panel -->
<div class="bg-white rounded-2xl shadow-xl overflow-hidden">
<div class="p-4 bg-gray-800">
<h2 class="text-white font-semibold">DJ Control Panel</h2>
</div>
<div class="p-6">
<!-- Current Song -->
<div class="mb-8">
<div class="flex items-center mb-4">
<div class="w-12 h-12 bg-pink-100 rounded-lg flex items-center justify-center mr-3">
<i class="fas fa-music text-pink-500"></i>
</div>
<div>
<h3 class="font-semibold text-gray-800">Now Playing</h3>
<p class="text-sm text-gray-500">Selected by AI based on activity</p>
</div>
</div>
<div class="song-card bg-gray-50 rounded-xl p-4 transition-all duration-300">
<div class="flex items-center">
<div class="w-16 h-16 bg-gradient-to-br from-purple-400 to-pink-500 rounded-lg flex items-center justify-center mr-4">
<i class="fas fa-play text-white"></i>
</div>
<div>
<h4 class="font-semibold">Uptown Funk</h4>
<p class="text-sm text-gray-500">Bruno Mars</p>
<div class="flex items-center mt-1">
<span class="text-xs bg-green-100 text-green-800 px-2 py-1 rounded-full">High Energy</span>
</div>
</div>
</div>
<div class="mt-3">
<div class="w-full bg-gray-200 rounded-full h-1.5">
<div class="bg-pink-500 h-1.5 rounded-full" style="width: 65%"></div>
</div>
<div class="flex justify-between text-xs text-gray-500 mt-1">
<span>2:15</span>
<span>3:42</span>
</div>
</div>
</div>
</div>
<!-- Dance Floor Stats -->
<div class="mb-8">
<h3 class="font-semibold text-gray-800 mb-3">Dance Floor Metrics</h3>
<div class="grid grid-cols-3 gap-3">
<div class="bg-blue-50 p-3 rounded-lg text-center">
<div class="text-2xl font-bold text-blue-600 mb-1">87%</div>
<div class="text-xs text-blue-800">Dancing</div>
</div>
<div class="bg-purple-50 p-3 rounded-lg text-center">
<div class="text-2xl font-bold text-purple-600 mb-1">23</div>
<div class="text-xs text-purple-800">Active</div>
</div>
<div class="bg-pink-50 p-3 rounded-lg text-center">
<div class="text-2xl font-bold text-pink-600 mb-1">9.2</div>
<div class="text-xs text-pink-800">Energy</div>
</div>
</div>
</div>
<!-- AI Recommendations -->
<div>
<h3 class="font-semibold text-gray-800 mb-3">AI Recommendations</h3>
<div class="space-y-3">
<div class="flex items-center p-3 bg-gray-50 rounded-lg cursor-pointer hover:bg-gray-100">
<div class="w-10 h-10 bg-purple-100 rounded-md flex items-center justify-center mr-3">
<i class="fas fa-bolt text-purple-500 text-sm"></i>
</div>
<div>
<p class="text-sm font-medium">Increase tempo</p>
<p class="text-xs text-gray-500">More people are joining</p>
</div>
</div>
<div class="flex items-center p-3 bg-gray-50 rounded-lg cursor-pointer hover:bg-gray-100">
<div class="w-10 h-10 bg-blue-100 rounded-md flex items-center justify-center mr-3">
<i class="fas fa-random text-blue-500 text-sm"></i>
</div>
<div>
<p class="text-sm font-medium">Switch to Pop</p>
<p class="text-xs text-gray-500">Current genre getting stale</p>
</div>
</div>
<div class="flex items-center p-3 bg-gray-50 rounded-lg cursor-pointer hover:bg-gray-100">
<div class="w-10 h-10 bg-green-100 rounded-md flex items-center justify-center mr-3">
<i class="fas fa-heart text-green-500 text-sm"></i>
</div>
<div>
<p class="text-sm font-medium">Play favorite</p>
<p class="text-xs text-gray-500">"I Wanna Dance with Somebody"</p>
</div>
</div>
</div>
</div>
</div>
<div class="p-4 bg-gray-100 border-t">
<button class="w-full bg-pink-500 hover:bg-pink-600 text-white py-3 rounded-lg font-medium flex items-center justify-center pulse-animation">
<i class="fas fa-magic mr-2"></i> Auto-DJ Mode: ON
</button>
</div>
</div>
<!-- Playlist & Settings -->
<div class="lg:col-span-3 grid grid-cols-1 md:grid-cols-3 gap-8">
<!-- Upcoming Songs -->
<div class="bg-white rounded-2xl shadow-xl overflow-hidden">
<div class="p-4 bg-gray-800">
<h2 class="text-white font-semibold">Upcoming Playlist</h2>
</div>
<div class="p-4">
<div class="overflow-y-auto max-h-96 pr-2">
<div class="space-y-3">
<!-- Sample playlist items -->
<div class="flex items-center p-3 bg-gray-50 rounded-lg">
<div class="w-10 h-10 bg-yellow-100 rounded-md flex items-center justify-center mr-3">
<span class="text-yellow-500 font-medium">1</span>
</div>
<div class="flex-grow">
<h4 class="font-medium text-sm">Can't Stop the Feeling!</h4>
<p class="text-xs text-gray-500">Justin Timberlake</p>
</div>
<span class="text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full">Pop</span>
</div>
<div class="flex items-center p-3 bg-gray-50 rounded-lg">
<div class="w-10 h-10 bg-gray-100 rounded-md flex items-center justify-center mr-3">
<span class="text-gray-500 font-medium">2</span>
</div>
<div class="flex-grow">
<h4 class="font-medium text-sm">Thinking Out Loud</h4>
<p class="text-xs text-gray-500">Ed Sheeran</p>
</div>
<span class="text-xs bg-pink-100 text-pink-800 px-2 py-1 rounded-full">Slow</span>
</div>
<div class="flex items-center p-3 bg-gray-50 rounded-lg">
<div class="w-10 h-10 bg-gray-100 rounded-md flex items-center justify-center mr-3">
<span class="text-gray-500 font-medium">3</span>
</div>
<div class="flex-grow">
<h4 class="font-medium text-sm">Dancing Queen</h4>
<p class="text-xs text-gray-500">ABBA</p>
</div>
<span class="text-xs bg-purple-100 text-purple-800 px-2 py-1 rounded-full">Disco</span>
</div>
<div class="flex items-center p-3 bg-gray-50 rounded-lg">
<div class="w-10 h-10 bg-gray-100 rounded-md flex items-center justify-center mr-3">
<span class="text-gray-500 font-medium">4</span>
</div>
<div class="flex-grow">
<h4 class="font-medium text-sm">Shape of You</h4>
<p class="text-xs text-gray-500">Ed Sheeran</p>
</div>
<span class="text-xs bg-green-100 text-green-800 px-2 py-1 rounded-full">Pop</span>
</div>
<div class="flex items-center p-3 bg-gray-50 rounded-lg">
<div class="w-10 h-10 bg-gray-100 rounded-md flex items-center justify-center mr-3">
<span class="text-gray-500 font-medium">5</span>
</div>
<div class="flex-grow">
<h4 class="font-medium text-sm">Billie Jean</h4>
<p class="text-xs text-gray-500">Michael Jackson</p>
</div>
<span class="text-xs bg-indigo-100 text-indigo-800 px-2 py-1 rounded-full">80s</span>
</div>
</div>
</div>
<button class="w-full mt-4 border-2 border-pink-500 text-pink-500 hover:bg-pink-50 py-2 rounded-lg font-medium flex items-center justify-center">
<i class="fas fa-plus mr-2"></i> Add Songs
</button>
</div>
</div>
<!-- Genre Settings -->
<div class="bg-white rounded-2xl shadow-xl overflow-hidden">
<div class="p-4 bg-gray-800">
<h2 class="text-white font-semibold">Genre Preferences</h2>
</div>
<div class="p-4">
<div class="space-y-4">
<div>
<label class="flex items-center justify-between cursor-pointer">
<span class="font-medium">Pop</span>
<div class="relative">
<input type="checkbox" class="sr-only" checked>
<div class="block bg-gray-300 w-12 h-6 rounded-full"></div>
<div class="dot absolute left-1 top-1 bg-white w-4 h-4 rounded-full transition transform translate-x-6 bg-green-500"></div>
</div>
</label>
<div class="w-full bg-gray-200 rounded-full h-1.5 mt-2">
<div class="bg-pink-500 h-1.5 rounded-full" style="width: 80%"></div>
</div>
</div>
<div>
<label class="flex items-center justify-between cursor-pointer">
<span class="font-medium">Rock</span>
<div class="relative">
<input type="checkbox" class="sr-only" checked>
<div class="block bg-gray-300 w-12 h-6 rounded-full"></div>
<div class="dot absolute left-1 top-1 bg-white w-4 h-4 rounded-full transition transform translate-x-6 bg-green-500"></div>
</div>
</label>
<div class="w-full bg-gray-200 rounded-full h-1.5 mt-2">
<div class="bg-pink-500 h-1.5 rounded-full" style="width: 50%"></div>
</div>
</div>
<div>
<label class="flex items-center justify-between cursor-pointer">
<span class="font-medium">Hip Hop</span>
<div class="relative">
<input type="checkbox" class="sr-only">
<div class="block bg-gray-300 w-12 h-6 rounded-full"></div>
<div class="dot absolute left-1 top-1 bg-white w-4 h-4 rounded-full transition"></div>
</div>
</label>
<div class="w-full bg-gray-200 rounded-full h-1.5 mt-2">
<div class="bg-pink-500 h-1.5 rounded-full" style="width: 30%"></div>
</div>
</div>
<div>
<label class="flex items-center justify-between cursor-pointer">
<span class="font-medium">Electronic</span>
<div class="relative">
<input type="checkbox" class="sr-only" checked>
<div class="block bg-gray-300 w-12 h-6 rounded-full"></div>
<div class="dot absolute left-1 top-1 bg-white w-4 h-4 rounded-full transition transform translate-x-6 bg-green-500"></div>
</div>
</label>
<div class="w-full bg-gray-200 rounded-full h-1.5 mt-2">
<div class="bg-pink-500 h-1.5 rounded-full" style="width: 70%"></div>
</div>
</div>
<div>
<label class="flex items-center justify-between cursor-pointer">
<span class="font-medium">R&B/Soul</span>
<div class="relative">
<input type="checkbox" class="sr-only" checked>
<div class="block bg-gray-300 w-12 h-6 rounded-full"></div>
<div class="dot absolute left-1 top-1 bg-white w-4 h-4 rounded-full transition transform translate-x-6 bg-green-500"></div>
</div>
</label>
<div class="w-full bg-gray-200 rounded-full h-1.5 mt-2">
<div class="bg-pink-500 h-1.5 rounded-full" style="width: 60%"></div>
</div>
</div>
</div>
<button class="w-full mt-6 bg-gray-800 hover:bg-gray-900 text-white py-2 rounded-lg font-medium">
Save Preferences
</button>
</div>
</div>
<!-- Wedding Details -->
<div class="bg-white rounded-2xl shadow-xl overflow-hidden">
<div class="p-4 bg-gray-800">
<h2 class="text-white font-semibold">Wedding Details</h2>
</div>
<div class="p-4">
<div class="mb-6">
<div class="flex items-center mb-4">
<div class="w-12 h-12 bg-pink-100 rounded-lg flex items-center justify-center mr-3">
<i class="fas fa-heart text-pink-500"></i>
</div>
<div>
<h3 class="font-semibold text-gray-800">Couple's Profile</h3>
<p class="text-sm text-gray-500">Personalize the experience</p>
</div>
</div>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Bride's Name</label>
<input type="text" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-pink-500 focus:border-pink-500" value="Emily">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Groom's Name</label>
<input type="text" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-pink-500 focus:border-pink-500" value="Michael">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Wedding Date</label>
<input type="date" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-pink-500 focus:border-pink-500" value="2023-06-15">
</div>
</div>
</div>
<div class="mb-6">
<h3 class="font-semibold text-gray-800 mb-3">Special Songs</h3>
<div class="space-y-3">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">First Dance</label>
<input type="text" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-pink-500 focus:border-pink-500" placeholder="Song title">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Father-Daughter Dance</label>
<input type="text" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-pink-500 focus:border-pink-500" placeholder="Song title">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Mother-Son Dance</label>
<input type="text" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-pink-500 focus:border-pink-500" placeholder="Song title">
</div>
</div>
</div>
<button class="w-full bg-pink-500 hover:bg-pink-600 text-white py-2 rounded-lg font-medium">
Save Details
</button>
</div>
</div>
</div>
</main>
<!-- Footer -->
<footer class="mt-16 pt-8 border-t border-gray-200">
<div class="flex flex-col md:flex-row justify-between items-center">
<div class="flex items-center mb-4 md:mb-0">
<div class="w-10 h-10 rounded-full bg-pink-500 flex items-center justify-center mr-3">
<i class="fas fa-music text-white"></i>
</div>
<span class="title-font font-semibold text-gray-800">Wedding Groove AI</span>
</div>
<div class="flex space-x-6">
<a href="#" class="text-gray-500 hover:text-pink-500">
<i class="fab fa-facebook-f"></i>
</a>
<a href="#" class="text-gray-500 hover:text-pink-500">
<i class="fab fa-instagram"></i>
</a>
<a href="#" class="text-gray-500 hover:text-pink-500">
<i class="fab fa-twitter"></i>
</a>
<a href="#" class="text-gray-500 hover:text-pink-500">
<i class="fab fa-youtube"></i>
</a>
</div>
</div>
<div class="mt-8 text-center text-sm text-gray-500">
<p>© 2023 Wedding Groove AI. All rights reserved.</p>
<p class="mt-2">The intelligent virtual DJ for your perfect wedding reception.</p>
</div>
</footer>
</div>
<script>
// Simple animation for demo purposes
document.addEventListener('DOMContentLoaded', function() {
// Simulate changing dance floor metrics
setInterval(() => {
const dancingElement = document.querySelector('.bg-blue-50 .text-2xl');
const activeElement = document.querySelector('.bg-purple-50 .text-2xl');
const energyElement = document.querySelector('.bg-pink-50 .text-2xl');
// Random fluctuations for demo
const currentDancing = parseInt(dancingElement.textContent);
const currentActive = parseInt(activeElement.textContent);
const currentEnergy = parseFloat(energyElement.textContent);
dancingElement.textContent = Math.max(70, Math.min(95, currentDancing + Math.floor(Math.random() * 6) - 2)) + '%';
activeElement.textContent = Math.max(15, Math.min(30, currentActive + Math.floor(Math.random() * 5) - 2));
energyElement.textContent = (Math.max(7, Math.min(9.8, currentEnergy + (Math.random() * 0.6) - 0.3)).toFixed(1);
// Update song progress
const progressBar = document.querySelector('.bg-pink-500');
let progress = parseInt(progressBar.style.width);
progress = (progress + 1) % 100;
progressBar.style.width = progress + '%';
// Update time display
const timeElements = document.querySelectorAll('.text-xs.text-gray-500 span');
if (timeElements.length === 2) {
const currentTime = timeElements[0];
const totalTime = timeElements[1];
if (currentTime.textContent === '2:15') {
currentTime.textContent = '2:30';
} else if (currentTime.textContent === '2:30') {
currentTime.textContent = '2:45';
} else {
currentTime.textContent = '2:15';
}
}
}, 2000);
// Camera connect button
const connectBtn = document.querySelector('.bg-pink-500');
if (connectBtn) {
connectBtn.addEventListener('click', function() {
alert('Camera connection dialog would appear here in a full implementation.');
});
}
});
</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=kamioll999/cam" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>