aimuisc / upload.html
nkjoy's picture
탐색 페이지도 만들어줘! - Follow Up Deployment
5bad1ac verified
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>음악 업로드 - AI Music Hub</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
darkMode: 'class',
theme: {
extend: {
colors: {
navy: '#0f172a',
charcoal: '#1e293b',
accent: {
from: '#a855f7',
to: '#ec4899'
}
},
backgroundImage: {
'glass': 'linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05))',
'neon-glow': 'linear-gradient(45deg, #a855f7, #ec4899, #a855f7)',
},
boxShadow: {
'neon': '0 0 5px #a855f7, 0 0 10px #ec4899, 0 0 15px #a855f7',
'neon-hover': '0 0 10px #a855f7, 0 0 20px #ec4899, 0 0 30px #a855f7'
}
}
}
}
</script>
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://unpkg.com/feather-icons"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;600;700&display=swap');
body {
font-family: 'Noto Sans KR', sans-serif;
background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
color: #f8fafc;
min-height: 100vh;
}
.glass-button {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05));
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
transition: all 0.3s ease;
}
.glass-button:hover {
box-shadow: 0 0 10px #a855f7, 0 0 20px #ec4899, 0 0 30px #a855f7;
transform: translateY(-2px);
}
.neon-border {
border: 1px solid transparent;
background: linear-gradient(#0f172a, #0f172a) padding-box,
linear-gradient(45deg, #a855f7, #ec4899) border-box;
}
.upload-area {
background: linear-gradient(135deg, rgba(30, 41, 59, 0.5), rgba(15, 23, 42, 0.5));
backdrop-filter: blur(10px);
border: 2px dashed rgba(168, 85, 247, 0.3);
transition: all 0.3s ease;
}
.upload-area:hover, .upload-area.dragover {
border-color: #a855f7;
box-shadow: 0 0 15px rgba(168, 85, 247, 0.2);
}
.form-input {
background: rgba(30, 41, 59, 0.5);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
transition: all 0.3s ease;
}
.form-input:focus {
box-shadow: 0 0 5px #a855f7, 0 0 10px #ec4899;
border-color: transparent;
}
.select-box {
background: rgba(30, 41, 59, 0.5);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
</style>
</head>
<body class="min-h-screen">
<!-- Navigation -->
<nav class="fixed w-full z-50 bg-navy/80 backdrop-blur-md border-b border-gray-800">
<div class="container mx-auto px-4 py-3 flex items-center justify-between">
<a href="index.html" class="flex items-center space-x-2">
<div class="w-8 h-8 rounded-full bg-gradient-to-r from-accent-from to-accent-to flex items-center justify-center">
<i data-feather="music" class="text-white"></i>
</div>
<span class="text-xl font-bold bg-gradient-to-r from-accent-from to-accent-to bg-clip-text text-transparent">AI Music Hub</span>
</a>
<div class="flex items-center space-x-4">
<a href="index.html" class="text-gray-300 hover:text-white transition">홈으로</a>
<a href="collection.html" class="text-gray-300 hover:text-white transition">컬렉션</a>
<a href="mypage.html" class="text-gray-300 hover:text-white transition">마이페이지</a>
<div class="relative">
<a href="mypage.html" class="w-10 h-10 rounded-full bg-gradient-to-r from-accent-from to-accent-to flex items-center justify-center">
<i data-feather="user" class="text-white"></i>
</a>
</div>
</div>
</div>
</nav>
<!-- Upload Section -->
<section class="pt-32 pb-20 px-4">
<div class="container mx-auto max-w-4xl">
<h1 class="text-3xl md:text-4xl font-bold mb-2 text-center" data-aos="fade-up">AI 음악 업로드</h1>
<p class="text-gray-400 text-center mb-10" data-aos="fade-up" data-aos-delay="100">AI로 생성한 음악을 업로드하고 커뮤니티와 공유하세요</p>
<div class="bg-charcoal/50 backdrop-blur-md rounded-2xl p-6 md:p-8" data-aos="fade-up" data-aos-delay="200">
<!-- Upload Area -->
<div class="upload-area rounded-xl p-8 text-center mb-8 cursor-pointer" id="dropArea">
<i data-feather="upload-cloud" class="w-12 h-12 mx-auto text-accent-from mb-4"></i>
<h3 class="text-xl font-semibold mb-2">음악 파일 업로드</h3>
<p class="text-gray-400 mb-4">MP3, WAV, FLAC 파일을 드래그 앤 드롭하거나 클릭하여 선택하세요</p>
<button class="glass-button px-6 py-2 text-white mx-auto">파일 선택</button>
<input type="file" class="hidden" id="fileInput" accept="audio/*">
</div>
<!-- Track Info Form -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<div>
<label class="block text-sm font-medium mb-2">음악 제목</label>
<input type="text" class="form-input w-full px-4 py-3 rounded-lg focus:outline-none" placeholder="제목을 입력하세요">
</div>
<div>
<label class="block text-sm font-medium mb-2">커버 아트</label>
<div class="flex items-center space-x-4">
<div class="w-16 h-16 bg-gray-700 rounded-lg flex items-center justify-center">
<i data-feather="image" class="text-gray-400"></i>
</div>
<button class="glass-button px-4 py-2 text-white">이미지 업로드</button>
</div>
</div>
</div>
<div class="mb-6">
<label class="block text-sm font-medium mb-2">음악 설명</label>
<textarea class="form-input w-full px-4 py-3 rounded-lg focus:outline-none h-32" placeholder="음악에 대한 설명을 입력하세요"></textarea>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
<div>
<label class="block text-sm font-medium mb-2">태그</label>
<input type="text" class="form-input w-full px-4 py-3 rounded-lg focus:outline-none" placeholder="#일렉트로닉 #앰비언트 #AI">
<p class="text-gray-400 text-xs mt-2">쉼표로 구분하여 여러 태그를 추가하세요</p>
</div>
<div>
<label class="block text-sm font-medium mb-2">생성 AI 도구</label>
<div class="relative">
<select class="select-box w-full px-4 py-3 rounded-lg appearance-none focus:outline-none">
<option>Soundful AI</option>
<option>AIVA</option>
<option>Amper Music</option>
<option>OpenAI MuseNet</option>
<option>Jukebox AI</option>
<option>Amadeus Code</option>
<option>Ecrett Music</option>
<option>기타</option>
</select>
<i data-feather="chevron-down" class="absolute right-3 top-1/2 transform -translate-y-1/2 pointer-events-none"></i>
</div>
</div>
</div>
<!-- Privacy Settings -->
<div class="mb-8">
<label class="block text-sm font-medium mb-4">공개 설정</label>
<div class="flex flex-wrap gap-4">
<label class="flex items-center space-x-2">
<input type="radio" name="privacy" checked>
<span>공개</span>
</label>
<label class="flex items-center space-x-2">
<input type="radio" name="privacy">
<span>비공개</span>
</label>
<label class="flex items-center space-x-2">
<input type="radio" name="privacy">
<span>링크 공유만</span>
</label>
</div>
</div>
<!-- Submit Button -->
<button class="w-full glass-button py-4 text-white font-semibold rounded-lg flex items-center justify-center space-x-2">
<i data-feather="upload" class="w-5 h-5"></i>
<span>음악 업로드</span>
</button>
</div>
<!-- Tips -->
<div class="mt-12 bg-charcoal/50 backdrop-blur-md rounded-2xl p-6" data-aos="fade-up" data-aos-delay="300">
<h3 class="text-xl font-semibold mb-4 flex items-center">
<i data-feather="info" class="w-5 h-5 text-accent-from mr-2"></i>
업로드 팁
</h3>
<ul class="space-y-2 text-gray-300">
<li class="flex items-start">
<i data-feather="check" class="w-4 h-4 text-green-400 mt-1 mr-2"></i>
<span>고음질 오디오 파일(320kbps MP3 또는 무손실 형식)을 사용하세요</span>
</li>
<li class="flex items-start">
<i data-feather="check" class="w-4 h-4 text-green-400 mt-1 mr-2"></i>
<span>정확한 태그를 추가하면 더 많은 사람들이 음악을 발견할 수 있습니다</span>
</li>
<li class="flex items-start">
<i data-feather="check" class="w-4 h-4 text-green-400 mt-1 mr-2"></i>
<span>커버 아트는 최소 1000x1000 픽셀 이상의 정사각형 이미지를 사용하세요</span>
</li>
<li class="flex items-start">
<i data-feather="check" class="w-4 h-4 text-green-400 mt-1 mr-2"></i>
<span>음악 생성에 사용한 AI 도구를 정확하게 선택해 주세요</span>
</li>
</ul>
</div>
</div>
</section>
<!-- Footer -->
<footer class="py-12 px-4 border-t border-gray-800">
<div class="container mx-auto text-center">
<div class="flex items-center justify-center space-x-2 mb-4">
<div class="w-6 h-6 rounded-full bg-gradient-to-r from-accent-from to-accent-to flex items-center justify-center">
<i data-feather="music" class="text-white"></i>
</div>
<span class="text-lg font-bold">AI Music Hub</span>
</div>
<p class="text-gray-400 mb-6">AI 생성 음악의 프리미엄 플랫폼</p>
<div class="flex justify-center space-x-4 mb-6">
<a href="#" class="text-gray-400 hover:text-white transition">이용약관</a>
<a href="#" class="text-gray-400 hover:text-white transition">개인정보처리방침</a>
<a href="#" class="text-gray-400 hover:text-white transition">문의하기</a>
</div>
<p class="text-gray-400">© 2023 AI Music Hub. All rights reserved.</p>
</div>
</footer>
<script>
AOS.init({
duration: 800,
easing: 'ease-in-out',
once: true
});
feather.replace();
// Drag and drop functionality
const dropArea = document.getElementById('dropArea');
const fileInput = document.getElementById('fileInput');
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, preventDefaults, false);
});
function preventDefaults(e) {
e.preventDefault();
e.stopPropagation();
}
['dragenter', 'dragover'].forEach(eventName => {
dropArea.addEventListener(eventName, highlight, false);
});
['dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, unhighlight, false);
});
function highlight() {
dropArea.classList.add('dragover');
}
function unhighlight() {
dropArea.classList.remove('dragover');
}
dropArea.addEventListener('drop', handleDrop, false);
function handleDrop(e) {
const dt = e.dataTransfer;
const files = dt.files;
handleFiles(files);
}
dropArea.addEventListener('click', () => {
fileInput.click();
});
fileInput.addEventListener('change', () => {
handleFiles(fileInput.files);
});
function handleFiles(files) {
if (files.length > 0) {
// Here you would handle the file upload
console.log('File selected:', files[0].name);
dropArea.querySelector('p').textContent = `선택된 파일: ${files[0].name}`;
}
}
</script>
</body>
</html>