Spaces:
Running
Running
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>MelodyMarket - Sell Your Music</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"> | |
<style> | |
/* Custom CSS for audio waveform */ | |
.waveform { | |
height: 60px; | |
background: linear-gradient(90deg, #4f46e5 0%, #a855f7 50%, #ec4899 100%); | |
position: relative; | |
overflow: hidden; | |
} | |
.waveform::before { | |
content: ""; | |
position: absolute; | |
top: 0; | |
left: 0; | |
right: 0; | |
bottom: 0; | |
background: repeating-linear-gradient( | |
90deg, | |
transparent, | |
transparent 2px, | |
rgba(255, 255, 255, 0.3) 2px, | |
rgba(255, 255, 255, 0.3) 4px | |
); | |
animation: wave 1s linear infinite; | |
} | |
@keyframes wave { | |
0% { transform: translateX(0); } | |
100% { transform: translateX(-4px); } | |
} | |
/* Custom scrollbar */ | |
::-webkit-scrollbar { | |
width: 8px; | |
} | |
::-webkit-scrollbar-track { | |
background: #f1f1f1; | |
} | |
::-webkit-scrollbar-thumb { | |
background: #888; | |
border-radius: 4px; | |
} | |
::-webkit-scrollbar-thumb:hover { | |
background: #555; | |
} | |
/* Pulse animation for upload button */ | |
@keyframes pulse { | |
0% { transform: scale(1); } | |
50% { transform: scale(1.05); } | |
100% { transform: scale(1); } | |
} | |
.pulse { | |
animation: pulse 2s infinite; | |
} | |
/* Custom audio player */ | |
.audio-progress { | |
-webkit-appearance: none; | |
height: 6px; | |
background: #ddd; | |
border-radius: 3px; | |
outline: none; | |
} | |
.audio-progress::-webkit-slider-thumb { | |
-webkit-appearance: none; | |
width: 16px; | |
height: 16px; | |
border-radius: 50%; | |
background: #4f46e5; | |
cursor: pointer; | |
} | |
</style> | |
</head> | |
<body class="bg-gray-100 font-sans"> | |
<!-- Navigation --> | |
<nav class="bg-white shadow-lg"> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
<div class="flex justify-between h-16"> | |
<div class="flex items-center"> | |
<div class="flex-shrink-0 flex items-center"> | |
<i class="fas fa-music text-purple-600 text-2xl mr-2"></i> | |
<span class="text-xl font-bold text-gray-900">MelodyMarket</span> | |
</div> | |
</div> | |
<div class="flex items-center"> | |
<div class="hidden md:ml-6 md:flex md:space-x-8"> | |
<a href="#" class="border-purple-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Dashboard</a> | |
<a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Discover</a> | |
<a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Sales</a> | |
<a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Profile</a> | |
</div> | |
<div class="ml-4 flex items-center md:ml-6"> | |
<button class="bg-purple-600 hover:bg-purple-700 text-white px-4 py-2 rounded-md text-sm font-medium flex items-center"> | |
<i class="fas fa-upload mr-2"></i> Upload Track | |
</button> | |
<div class="ml-3 relative"> | |
<div> | |
<button type="button" class="max-w-xs bg-white flex items-center text-sm rounded-full focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500" id="user-menu" aria-expanded="false" aria-haspopup="true"> | |
<span class="sr-only">Open user menu</span> | |
<img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt=""> | |
</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</nav> | |
<!-- Main Content --> | |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"> | |
<div class="grid grid-cols-1 md:grid-cols-3 gap-8"> | |
<!-- Left Sidebar - Upload Section --> | |
<div class="md:col-span-1 bg-white rounded-lg shadow p-6"> | |
<h2 class="text-lg font-medium text-gray-900 mb-4">Upload New Track</h2> | |
<div class="space-y-4"> | |
<!-- File Upload --> | |
<div class="border-2 border-dashed border-gray-300 rounded-lg p-6 text-center"> | |
<i class="fas fa-cloud-upload-alt text-4xl text-purple-500 mb-2"></i> | |
<p class="text-sm text-gray-600 mb-2">Drag & drop your audio file here</p> | |
<p class="text-xs text-gray-500 mb-4">Supports: MP3, WAV, FLAC (Max 50MB)</p> | |
<input type="file" id="audio-upload" class="hidden" accept="audio/*"> | |
<label for="audio-upload" class="bg-purple-600 hover:bg-purple-700 text-white px-4 py-2 rounded-md text-sm font-medium inline-flex items-center cursor-pointer pulse"> | |
<i class="fas fa-folder-open mr-2"></i> Select File | |
</label> | |
</div> | |
<!-- Track Info Form --> | |
<div class="space-y-2"> | |
<label for="track-title" class="block text-sm font-medium text-gray-700">Track Title</label> | |
<input type="text" id="track-title" class="block w-full rounded-md border-gray-300 shadow-sm focus:border-purple-500 focus:ring-purple-500 sm:text-sm p-2 border"> | |
<label for="artist-name" class="block text-sm font-medium text-gray-700">Artist Name</label> | |
<input type="text" id="artist-name" class="block w-full rounded-md border-gray-300 shadow-sm focus:border-purple-500 focus:ring-purple-500 sm:text-sm p-2 border"> | |
<label for="track-genre" class="block text-sm font-medium text-gray-700">Genre</label> | |
<select id="track-genre" class="block w-full rounded-md border-gray-300 shadow-sm focus:border-purple-500 focus:ring-purple-500 sm:text-sm p-2 border"> | |
<option>Pop</option> | |
<option>Rock</option> | |
<option>Hip Hop</option> | |
<option>Electronic</option> | |
<option>R&B</option> | |
<option>Classical</option> | |
<option>Jazz</option> | |
<option>Other</option> | |
</select> | |
</div> | |
<!-- Security Tag --> | |
<div class="space-y-2"> | |
<label class="block text-sm font-medium text-gray-700">Security Options</label> | |
<div class="flex items-center"> | |
<input id="watermark" name="watermark" type="checkbox" class="h-4 w-4 text-purple-600 focus:ring-purple-500 border-gray-300 rounded"> | |
<label for="watermark" class="ml-2 block text-sm text-gray-700">Add Digital Watermark</label> | |
</div> | |
<div class="flex items-center"> | |
<input id="fingerprint" name="fingerprint" type="checkbox" class="h-4 w-4 text-purple-600 focus:ring-purple-500 border-gray-300 rounded"> | |
<label for="fingerprint" class="ml-2 block text-sm text-gray-700">Add Audio Fingerprint</label> | |
</div> | |
<div class="flex items-center"> | |
<input id="drm" name="drm" type="checkbox" class="h-4 w-4 text-purple-600 focus:ring-purple-500 border-gray-300 rounded"> | |
<label for="drm" class="ml-2 block text-sm text-gray-700">Enable DRM Protection</label> | |
</div> | |
</div> | |
<!-- Pricing --> | |
<div class="space-y-2"> | |
<label for="track-price" class="block text-sm font-medium text-gray-700">Price ($)</label> | |
<div class="relative rounded-md shadow-sm"> | |
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> | |
<span class="text-gray-500 sm:text-sm">$</span> | |
</div> | |
<input type="number" id="track-price" class="block w-full pl-7 pr-12 rounded-md border-gray-300 shadow-sm focus:border-purple-500 focus:ring-purple-500 sm:text-sm p-2 border" placeholder="0.99" min="0.50" max="20.00" step="0.01"> | |
<div class="absolute inset-y-0 right-0 flex items-center"> | |
<span class="text-gray-500 sm:text-sm mr-3">USD</span> | |
</div> | |
</div> | |
</div> | |
<!-- Upload Button --> | |
<button class="w-full bg-purple-600 hover:bg-purple-700 text-white px-4 py-2 rounded-md text-sm font-medium flex items-center justify-center"> | |
<i class="fas fa-upload mr-2"></i> Publish Track | |
</button> | |
</div> | |
</div> | |
<!-- Main Content - Track List --> | |
<div class="md:col-span-2 space-y-6"> | |
<div class="bg-white rounded-lg shadow overflow-hidden"> | |
<div class="px-6 py-4 border-b border-gray-200"> | |
<h3 class="text-lg font-medium text-gray-900">Your Tracks</h3> | |
</div> | |
<!-- Track List --> | |
<div class="divide-y divide-gray-200 max-h-96 overflow-y-auto"> | |
<!-- Track Item 1 --> | |
<div class="p-4 hover:bg-gray-50"> | |
<div class="flex items-start"> | |
<div class="flex-shrink-0 h-16 w-16 rounded-md bg-purple-100 flex items-center justify-center"> | |
<i class="fas fa-music text-purple-600 text-xl"></i> | |
</div> | |
<div class="ml-4 flex-1"> | |
<div class="flex items-center justify-between"> | |
<h4 class="text-sm font-medium text-gray-900">Summer Vibes</h4> | |
<span class="text-sm font-medium text-purple-600">$1.99</span> | |
</div> | |
<p class="text-sm text-gray-500">DJ Sunshine • Pop • 3:24</p> | |
<div class="mt-2 flex items-center space-x-4"> | |
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800"> | |
<i class="fas fa-check-circle mr-1"></i> Published | |
</span> | |
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800"> | |
<i class="fas fa-lock mr-1"></i> Protected | |
</span> | |
</div> | |
</div> | |
<div class="ml-4 flex-shrink-0 flex space-x-2"> | |
<button class="w-8 h-8 rounded-full bg-gray-100 hover:bg-gray-200 flex items-center justify-center"> | |
<i class="fas fa-edit text-gray-500"></i> | |
</button> | |
<button class="w-8 h-8 rounded-full bg-gray-100 hover:bg-gray-200 flex items-center justify-center"> | |
<i class="fas fa-trash text-gray-500"></i> | |
</button> | |
</div> | |
</div> | |
</div> | |
<!-- Track Item 2 --> | |
<div class="p-4 hover:bg-gray-50"> | |
<div class="flex items-start"> | |
<div class="flex-shrink-0 h-16 w-16 rounded-md bg-purple-100 flex items-center justify-center"> | |
<i class="fas fa-music text-purple-600 text-xl"></i> | |
</div> | |
<div class="ml-4 flex-1"> | |
<div class="flex items-center justify-between"> | |
<h4 class="text-sm font-medium text-gray-900">Midnight Dreams</h4> | |
<span class="text-sm font-medium text-purple-600">$2.49</span> | |
</div> | |
<p class="text-sm text-gray-500">Luna • Electronic • 4:12</p> | |
<div class="mt-2 flex items-center space-x-4"> | |
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800"> | |
<i class="fas fa-check-circle mr-1"></i> Published | |
</span> | |
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800"> | |
<i class="fas fa-exclamation-circle mr-1"></i> Unprotected | |
</span> | |
</div> | |
</div> | |
<div class="ml-4 flex-shrink-0 flex space-x-2"> | |
<button class="w-8 h-8 rounded-full bg-gray-100 hover:bg-gray-200 flex items-center justify-center"> | |
<i class="fas fa-edit text-gray-500"></i> | |
</button> | |
<button class="w-8 h-8 rounded-full bg-gray-100 hover:bg-gray-200 flex items-center justify-center"> | |
<i class="fas fa-trash text-gray-500"></i> | |
</button> | |
</div> | |
</div> | |
</div> | |
<!-- Track Item 3 --> | |
<div class="p-4 hover:bg-gray-50"> | |
<div class="flex items-start"> | |
<div class="flex-shrink-0 h-16 w-16 rounded-md bg-purple-100 flex items-center justify-center"> | |
<i class="fas fa-music text-purple-600 text-xl"></i> | |
</div> | |
<div class="ml-4 flex-1"> | |
<div class="flex items-center justify-between"> | |
<h4 class="text-sm font-medium text-gray-900">Urban Flow</h4> | |
<span class="text-sm font-medium text-purple-600">$1.29</span> | |
</div> | |
<p class="text-sm text-gray-500">MC Streets • Hip Hop • 3:45</p> | |
<div class="mt-2 flex items-center space-x-4"> | |
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800"> | |
<i class="fas fa-check-circle mr-1"></i> Published | |
</span> | |
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800"> | |
<i class="fas fa-lock mr-1"></i> Protected | |
</span> | |
</div> | |
</div> | |
<div class="ml-4 flex-shrink-0 flex space-x-2"> | |
<button class="w-8 h-8 rounded-full bg-gray-100 hover:bg-gray-200 flex items-center justify-center"> | |
<i class="fas fa-edit text-gray-500"></i> | |
</button> | |
<button class="w-8 h-8 rounded-full bg-gray-100 hover:bg-gray-200 flex items-center justify-center"> | |
<i class="fas fa-trash text-gray-500"></i> | |
</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Music Player --> | |
<div class="bg-white rounded-lg shadow overflow-hidden"> | |
<div class="px-6 py-4 border-b border-gray-200"> | |
<h3 class="text-lg font-medium text-gray-900">Preview Player</h3> | |
</div> | |
<div class="p-6"> | |
<div class="flex items-start"> | |
<div class="flex-shrink-0 h-20 w-20 rounded-md bg-purple-100 flex items-center justify-center"> | |
<i class="fas fa-music text-purple-600 text-2xl"></i> | |
</div> | |
<div class="ml-4 flex-1"> | |
<h4 class="text-lg font-medium text-gray-900">Summer Vibes</h4> | |
<p class="text-sm text-gray-500">DJ Sunshine • Pop</p> | |
<!-- Audio Waveform --> | |
<div class="waveform rounded-md mt-3 mb-2"></div> | |
<!-- Player Controls --> | |
<div class="flex items-center justify-between mt-4"> | |
<div class="flex items-center space-x-4"> | |
<button class="w-10 h-10 rounded-full bg-purple-600 hover:bg-purple-700 text-white flex items-center justify-center"> | |
<i class="fas fa-backward"></i> | |
</button> | |
<button class="w-12 h-12 rounded-full bg-purple-600 hover:bg-purple-700 text-white flex items-center justify-center"> | |
<i class="fas fa-play"></i> | |
</button> | |
<button class="w-10 h-10 rounded-full bg-purple-600 hover:bg-purple-700 text-white flex items-center justify-center"> | |
<i class="fas fa-forward"></i> | |
</button> | |
</div> | |
<div class="flex items-center space-x-4"> | |
<button class="w-8 h-8 rounded-full bg-gray-100 hover:bg-gray-200 flex items-center justify-center"> | |
<i class="fas fa-volume-up text-gray-500"></i> | |
</button> | |
<button class="w-8 h-8 rounded-full bg-gray-100 hover:bg-gray-200 flex items-center justify-center"> | |
<i class="fas fa-heart text-gray-500"></i> | |
</button> | |
<button class="w-8 h-8 rounded-full bg-gray-100 hover:bg-gray-200 flex items-center justify-center"> | |
<i class="fas fa-share-alt text-gray-500"></i> | |
</button> | |
</div> | |
</div> | |
<!-- Progress Bar --> | |
<div class="mt-4 flex items-center space-x-2"> | |
<span class="text-xs text-gray-500">1:23</span> | |
<input type="range" min="0" max="100" value="45" class="audio-progress flex-1"> | |
<span class="text-xs text-gray-500">3:24</span> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Footer --> | |
<footer class="bg-white border-t border-gray-200 mt-12"> | |
<div class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:px-8"> | |
<div class="grid grid-cols-2 md:grid-cols-4 gap-8"> | |
<div> | |
<h3 class="text-sm font-semibold text-gray-900 tracking-wider uppercase">Shop</h3> | |
<ul class="mt-4 space-y-2"> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">All Tracks</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">New Releases</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Top Sellers</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Genres</a></li> | |
</ul> | |
</div> | |
<div> | |
<h3 class="text-sm font-semibold text-gray-900 tracking-wider uppercase">Sell</h3> | |
<ul class="mt-4 space-y-2"> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Upload Music</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Pricing</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Security</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Royalties</a></li> | |
</ul> | |
</div> | |
<div> | |
<h3 class="text-sm font-semibold text-gray-900 tracking-wider uppercase">Company</h3> | |
<ul class="mt-4 space-y-2"> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">About</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Blog</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Careers</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Contact</a></li> | |
</ul> | |
</div> | |
<div> | |
<h3 class="text-sm font-semibold text-gray-900 tracking-wider uppercase">Legal</h3> | |
<ul class="mt-4 space-y-2"> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Privacy</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Terms</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">Copyright</a></li> | |
<li><a href="#" class="text-sm text-gray-600 hover:text-purple-600">DMCA</a></li> | |
</ul> | |
</div> | |
</div> | |
<div class="mt-8 pt-8 border-t border-gray-200 flex flex-col md:flex-row justify-between items-center"> | |
<p class="text-sm text-gray-500">© 2023 MelodyMarket. All rights reserved.</p> | |
<div class="mt-4 md:mt-0 flex space-x-6"> | |
<a href="#" class="text-gray-400 hover:text-purple-600"> | |
<i class="fab fa-facebook-f"></i> | |
</a> | |
<a href="#" class="text-gray-400 hover:text-purple-600"> | |
<i class="fab fa-twitter"></i> | |
</a> | |
<a href="#" class="text-gray-400 hover:text-purple-600"> | |
<i class="fab fa-instagram"></i> | |
</a> | |
<a href="#" class="text-gray-400 hover:text-purple-600"> | |
<i class="fab fa-youtube"></i> | |
</a> | |
</div> | |
</div> | |
</div> | |
</footer> | |
<script> | |
// Simple JavaScript for the music player functionality | |
document.addEventListener('DOMContentLoaded', function() { | |
// File upload preview | |
const fileUpload = document.getElementById('audio-upload'); | |
fileUpload.addEventListener('change', function(e) { | |
const fileName = e.target.files[0].name; | |
alert(`File "${fileName}" selected for upload!`); | |
}); | |
// Music player controls | |
const playButton = document.querySelector('.fa-play').parentElement; | |
let isPlaying = false; | |
playButton.addEventListener('click', function() { | |
const icon = this.querySelector('i'); | |
if (isPlaying) { | |
icon.classList.remove('fa-pause'); | |
icon.classList.add('fa-play'); | |
} else { | |
icon.classList.remove('fa-play'); | |
icon.classList.add('fa-pause'); | |
} | |
isPlaying = !isPlaying; | |
}); | |
// Price validation | |
const priceInput = document.getElementById('track-price'); | |
priceInput.addEventListener('change', function() { | |
const value = parseFloat(this.value); | |
if (value < 0.50) { | |
this.value = '0.50'; | |
alert('Minimum price is $0.50'); | |
} else if (value > 20.00) { | |
this.value = '20.00'; | |
alert('Maximum price is $20.00'); | |
} | |
}); | |
// Security tag explanation | |
const securityCheckboxes = document.querySelectorAll('input[name="watermark"], input[name="fingerprint"], input[name="drm"]'); | |
securityCheckboxes.forEach(checkbox => { | |
checkbox.addEventListener('change', function() { | |
if (this.checked) { | |
let message = ''; | |
if (this.id === 'watermark') { | |
message = 'Digital watermark will embed hidden identification in your audio file.'; | |
} else if (this.id === 'fingerprint') { | |
message = 'Audio fingerprint will create a unique signature for content identification.'; | |
} else if (this.id === 'drm') { | |
message = 'DRM protection will restrict unauthorized copying and distribution.'; | |
} | |
alert(message); | |
} | |
}); | |
}); | |
// Edit track buttons | |
const editButtons = document.querySelectorAll('.fa-edit').forEach(button => { | |
button.addEventListener('click', function() { | |
const trackTitle = this.closest('.flex').previousElementSibling.querySelector('h4').textContent; | |
alert(`Editing track: ${trackTitle}`); | |
}); | |
}); | |
// Delete track buttons | |
const deleteButtons = document.querySelectorAll('.fa-trash').forEach(button => { | |
button.addEventListener('click', function() { | |
const trackTitle = this.closest('.flex').previousElementSibling.querySelector('h4').textContent; | |
if (confirm(`Are you sure you want to delete "${trackTitle}"?`)) { | |
this.closest('.hover\\:bg-gray-50').remove(); | |
} | |
}); | |
}); | |
}); | |
</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=ToonTownTommy/ttt" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
</html> |