ttt / index.html
ToonTownTommy's picture
Add 2 files
e3bbf5f verified
<!DOCTYPE html>
<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>