Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>MusiQue - AI-Powered Music Streaming</title> | |
| <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <style> | |
| body { | |
| background-image: url('/static/uploaded-background.jpg'); | |
| background-size: cover; | |
| background-position: center; | |
| background-attachment: fixed; | |
| } | |
| .glass-effect { | |
| background: rgba(255, 255, 255, 0.1); | |
| backdrop-filter: blur(10px); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| } | |
| .music-card:hover { | |
| transform: translateY(-5px); | |
| transition: transform 0.3s ease; | |
| } | |
| .sidebar { | |
| position: fixed; | |
| top: 0; | |
| left: -300px; | |
| width: 300px; | |
| height: 100vh; | |
| background: rgba(139, 92, 246, 0.9); | |
| backdrop-filter: blur(10px); | |
| transition: left 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
| z-index: 1000; | |
| overflow-y: auto; | |
| } | |
| .sidebar.active { | |
| left: 0; | |
| } | |
| .sidebar-overlay { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: rgba(0, 0, 0, 0.5); | |
| z-index: 999; | |
| opacity: 0; | |
| visibility: hidden; | |
| transition: all 0.3s ease; | |
| } | |
| .sidebar-overlay.active { | |
| opacity: 1; | |
| visibility: visible; | |
| } | |
| .sidebar-header { | |
| padding: 2rem 1.5rem; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.2); | |
| } | |
| .sidebar-menu { | |
| padding: 1rem 0; | |
| } | |
| .sidebar-menu a { | |
| display: flex; | |
| align-items: center; | |
| padding: 1rem 1.5rem; | |
| color: white; | |
| text-decoration: none; | |
| transition: background 0.3s ease; | |
| } | |
| .sidebar-menu a:hover { | |
| background: rgba(255, 255, 255, 0.1); | |
| } | |
| .sidebar-menu i { | |
| margin-right: 1rem; | |
| width: 20px; | |
| } | |
| .menu-toggle { | |
| background: none; | |
| border: none; | |
| color: white; | |
| cursor: pointer; | |
| padding: 0.5rem; | |
| } | |
| </style> | |
| </head> | |
| <body class="gradient-bg min-h-screen text-white"> | |
| <!-- Sidebar --> | |
| <div class="sidebar-overlay" id="sidebarOverlay"></div> | |
| <aside class="sidebar" id="sidebar"> | |
| <div class="sidebar-header"> | |
| <div class="flex items-center space-x-2"> | |
| <i data-feather="music" class="w-8 h-8"></i> | |
| <h1 class="text-2xl font-bold">MusiQue</h1> | |
| </div> | |
| </div> | |
| <nav class="sidebar-menu"> | |
| <a href="#" class="active"> | |
| <i data-feather="home"></i> | |
| <span>Home</span> | |
| </a> | |
| <a href="#library"> | |
| <i data-feather="headphones"></i> | |
| <span>Library</span> | |
| </a> | |
| <a href="#downloads"> | |
| <i data-feather="download"></i> | |
| <span>Downloads</span> | |
| </a> | |
| <a href="#ai"> | |
| <i data-feather="cpu"></i> | |
| <span>AI Assistant</span> | |
| </a> | |
| <a href="#"> | |
| <i data-feather="heart"></i> | |
| <span>Favorites</span> | |
| </a> | |
| <a href="#"> | |
| <i data-feather="clock"></i> | |
| <span>Recently Played</span> | |
| </a> | |
| <a href="#"> | |
| <i data-feather="settings"></i> | |
| <span>Settings</span> | |
| </a> | |
| </nav> | |
| </aside> | |
| <!-- Navigation --> | |
| <nav class="glass-effect p-4 sticky top-0 z-50"> | |
| <div class="container mx-auto flex justify-between items-center"> | |
| <div class="flex items-center space-x-4"> | |
| <button class="menu-toggle" id="menuToggle"> | |
| <i data-feather="menu" class="w-6 h-6"></i> | |
| </button> | |
| <div class="flex items-center space-x-2"> | |
| <i data-feather="music" class="w-8 h-8"></i> | |
| <h1 class="text-2xl font-bold">MusiQue</h1> | |
| </div> | |
| </div> | |
| <div class="hidden md:flex space-x-4"> | |
| <a href="#" class="hover:text-pink-200">Home</a> | |
| <a href="#library" class="hover:text-pink-200">Library</a> | |
| <a href="#downloads" class="hover:text-pink-200">Downloads</a> | |
| <a href="#ai" class="hover:text-pink-200">AI Assistant</a> | |
| </div> | |
| </div> | |
| </nav> | |
| <!-- Hero Section --> | |
| <section class="container mx-auto px-4 py-16 text-center"> | |
| <h2 class="text-5xl font-bold mb-4">Stream Millions of Songs</h2> | |
| <p class="text-xl mb-8">AI-powered music discovery with offline download capabilities</p> | |
| <div class="max-w-2xl mx-auto"> | |
| <div class="relative"> | |
| <input type="text" | |
| placeholder="Search for songs, artists, or albums..." | |
| class="w-full p-4 rounded-full bg-white/20 backdrop-blur-md border border-white/30 text-white placeholder-white/70 focus:outline-none focus:ring-2 focus:ring-pink-300"> | |
| <button class="absolute right-2 top-2 bg-pink-600 hover:bg-pink-700 p-2 rounded-full"> | |
| <i data-feather="search" class="w-5 h-5"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Featured Music Section --> | |
| <section id="library" class="container mx-auto px-4 py-12"> | |
| <h3 class="text-3xl font-bold mb-8">Featured Music</h3> | |
| <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6"> | |
| <!-- Music Card 1 --> | |
| <div class="music-card glass-effect rounded-lg p-4"> | |
| <img src="http://static.photos/music/320x240/1" alt="Album Cover" class="w-full rounded-lg mb-4"> | |
| <h4 class="font-semibold">Chill Vibes</h4> | |
| <p class="text-sm text-gray-300">Various Artists</p> | |
| <div class="flex justify-between items-center mt-4"> | |
| <button class="p-2 rounded-full bg-pink-600 hover:bg-pink-700"> | |
| <i data-feather="play" class="w-4 h-4"></i> | |
| </button> | |
| <button class="p-2 rounded-full bg-white/20 hover:bg-white/30"> | |
| <i data-feather="download" class="w-4 h-4"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <!-- Repeat similar cards 3 more times --> | |
| <div class="music-card glass-effect rounded-lg p-4"> | |
| <img src="http://static.photos/music/320x240/2" alt="Album Cover" class="w-full rounded-lg mb-4"> | |
| <h4 class="font-semibold">Energy Boost</h4> | |
| <p class="text-sm text-gray-300">Top Hits</p> | |
| <div class="flex justify-between items-center mt-4"> | |
| <button class="p-2 rounded-full bg-purple-600 hover:bg-purple-700"> | |
| <i data-feather="play" class="w-4 h-4"></i> | |
| </button> | |
| <button class="p-2 rounded-full bg-white/20 hover:bg-white/30"> | |
| <i data-feather="download" class="w-4 h-4"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <div class="music-card glass-effect rounded-lg p-4"> | |
| <img src="http://static.photos/music/320x240/3" alt="Album Cover" class="w-full rounded-lg mb-4"> | |
| <h4 class="font-semibold">Focus Flow</h4> | |
| <p class="text-sm text-gray-300">Study Beats</p> | |
| <div class="flex justify-between items-center mt-4"> | |
| <button class="p-2 rounded-full bg-purple-600 hover:bg-purple-700"> | |
| <i data-feather="play" class="w-4 h-4"></i> | |
| </button> | |
| <button class="p-2 rounded-full bg-white/20 hover:bg-white/30"> | |
| <i data-feather="download" class="w-4 h-4"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <div class="music-card glass-effect rounded-lg p-4"> | |
| <img src="http://static.photos/music/320x240/4" alt="Album Cover" class="w-full rounded-lg mb-4"> | |
| <h4 class="font-semibold">Relaxation</h4> | |
| <p class="text-sm text-gray-300">Ambient Sounds</p> | |
| <div class="flex justify-between items-center mt-4"> | |
| <button class="p-2 rounded-full bg-purple-600 hover:bg-purple-700"> | |
| <i data-feather="play" class="w-4 h-4"></i> | |
| </button> | |
| <button class="p-2 rounded-full bg-white/20 hover:bg-white/30"> | |
| <i data-feather="download" class="w-4 h-4"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- AI Assistant Section --> | |
| <section id="ai" class="container mx-auto px-4 py-12"> | |
| <div class="glass-effect rounded-lg p-8"> | |
| <h3 class="text-3xl font-bold mb-4">AI Music Assistant</h3> | |
| <p class="mb-6">Describe the music you want to hear and our AI will find the perfect matches</p> | |
| <div class="flex space-x-4"> | |
| <input type="text" | |
| placeholder="e.g., upbeat electronic music for working out" | |
| class="flex-1 p-3 rounded-lg bg-white/20 backdrop-blur-md border border-white/30 text-white placeholder-white/70 focus:outline-none"> | |
| <button class="bg-pink-600 hover:bg-pink-700 px-6 py-3 rounded-lg font-semibold"> | |
| Generate | |
| </button> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Downloads Section --> | |
| <section id="downloads" class="container mx-auto px-4 py-12"> | |
| <h3 class="text-3xl font-bold mb-8">Your Downloads</h3> | |
| <div class="glass-effect rounded-lg p-6"> | |
| <p class="text-center text-gray-300">No downloads yet. Start downloading your favorite music!</p> | |
| </div> | |
| </section> | |
| <!-- Footer --> | |
| <footer class="glass-effect mt-12 p-6"> | |
| <div class="container mx-auto text-center"> | |
| <p>© 2024 MusiQue. Built with Jaclang and Byllm.</p> | |
| </div> | |
| </footer> | |
| <!-- Audio Player (Hidden by default) --> | |
| <div id="audioPlayer" class="fixed bottom-0 left-0 right-0 glass-effect p-4 hidden"> | |
| <div class="container mx-auto flex items-center justify-between"> | |
| <div class="flex items-center space-x-4"> | |
| <img src="http://static.photos/music/64x64/1" alt="Now Playing" class="w-12 h-12 rounded"> | |
| <div> | |
| <h4 class="font-semibold">Song Title</h4> | |
| <p class="text-sm text-gray-300">Artist</p> | |
| </div> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <button> | |
| <i data-feather="skip-back" class="w-5 h-5"></i> | |
| </button> | |
| <button class="bg-pink-600 rounded-full p-3"> | |
| <i data-feather="play" class="w-6 h-6"></i> | |
| </button> | |
| <button> | |
| <i data-feather="skip-forward" class="w-5 h-5"></i> | |
| </button> | |
| </div> | |
| <div class="flex-1 max-w-md"> | |
| <div class="flex items-center space-x-2"> | |
| <span class="text-sm">0:00</span> | |
| <div class="flex-1 bg-white/20 rounded-full h-1"> | |
| <div class="bg-pink-600 h-1 rounded-full w-0"></div> | |
| </div> | |
| <span class="text-sm">0:00</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <script> | |
| // Initialize feather icons | |
| feather.replace(); | |
| // Sidebar functionality with animations | |
| document.addEventListener('DOMContentLoaded', function() { | |
| const sidebar = document.getElementById('sidebar'); | |
| const sidebarOverlay = document.getElementById('sidebarOverlay'); | |
| const menuToggle = document.getElementById('menuToggle'); | |
| // Toggle sidebar | |
| function toggleSidebar() { | |
| sidebar.classList.toggle('active'); | |
| sidebarOverlay.classList.toggle('active'); | |
| } | |
| menuToggle.addEventListener('click', toggleSidebar); | |
| sidebarOverlay.addEventListener('click', toggleSidebar); | |
| // Close sidebar when clicking on a link (for mobile) | |
| const sidebarLinks = document.querySelectorAll('.sidebar-menu a'); | |
| sidebarLinks.forEach(link => { | |
| link.addEventListener('click', function() { | |
| if (window.innerWidth < 768) { | |
| toggleSidebar(); | |
| } | |
| }); | |
| }); | |
| // Basic music player functionality | |
| const playButtons = document.querySelectorAll('.music-card button:first-child'); | |
| const audioPlayer = document.getElementById('audioPlayer'); | |
| playButtons.forEach(button => { | |
| button.addEventListener('click', function() { | |
| audioPlayer.classList.remove('hidden'); | |
| // Simulate playing music | |
| const card = this.closest('.music-card'); | |
| const title = card.querySelector('h4').textContent; | |
| const artist = card.querySelector('p').textContent; | |
| audioPlayer.querySelector('h4').textContent = title; | |
| audioPlayer.querySelector('p').textContent = artist; | |
| }); | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> | |