Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Massive Music Booking App</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> | |
| @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap'); | |
| body { | |
| font-family: 'Poppins', sans-serif; | |
| max-width: 414px; | |
| margin: 0 auto; | |
| background-color: #f8f9fa; | |
| position: relative; | |
| min-height: 100vh; | |
| } | |
| .app-bar { | |
| height: 60px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| } | |
| .bottom-nav { | |
| height: 60px; | |
| box-shadow: 0 -2px 10px rgba(0,0,0,0.1); | |
| } | |
| .calendar-day.selected { | |
| background-color: #3b82f6; | |
| color: white; | |
| } | |
| .event-card { | |
| transition: all 0.3s ease; | |
| } | |
| .event-card:hover { | |
| transform: translateY(-3px); | |
| box-shadow: 0 10px 20px rgba(0,0,0,0.1); | |
| } | |
| .fade-in { | |
| animation: fadeIn 0.3s ease-in-out; | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| .slide-up { | |
| animation: slideUp 0.3s ease-out; | |
| } | |
| @keyframes slideUp { | |
| from { transform: translateY(20px); opacity: 0; } | |
| to { transform: translateY(0); opacity: 1; } | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-50"> | |
| <!-- App Header --> | |
| <header class="app-bar bg-white fixed top-0 left-0 right-0 z-10 flex items-center justify-between px-4"> | |
| <div class="flex items-center"> | |
| <img src="https://www.massivmusic.nl/wp-content/uploads/2021/04/MassivMusic_Logo_2021_RGB-300x100.png" alt="Massive Music Logo" class="h-10"> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <button class="text-gray-600"> | |
| <i class="fas fa-search"></i> | |
| </button> | |
| <button class="text-gray-600"> | |
| <i class="fas fa-user"></i> | |
| </button> | |
| </div> | |
| </header> | |
| <!-- Main Content --> | |
| <main class="pt-16 pb-20 px-4"> | |
| <!-- Tab Navigation --> | |
| <div class="flex border-b mb-6"> | |
| <button id="tab-agenda" class="flex-1 py-3 font-medium text-blue-600 border-b-2 border-blue-600"> | |
| <i class="fas fa-calendar-alt mr-2"></i> Agenda | |
| </button> | |
| <button id="tab-booking" class="flex-1 py-3 font-medium text-gray-500"> | |
| <i class="fas fa-calendar-plus mr-2"></i> Book Us | |
| </button> | |
| <button id="tab-contact" class="flex-1 py-3 font-medium text-gray-500"> | |
| <i class="fas fa-envelope mr-2"></i> Contact | |
| </button> | |
| </div> | |
| <!-- Agenda Tab Content --> | |
| <div id="content-agenda" class="slide-up"> | |
| <div class="flex justify-between items-center mb-4"> | |
| <h2 class="text-xl font-bold text-gray-800">Upcoming Shows</h2> | |
| <div class="flex items-center space-x-2"> | |
| <button class="px-3 py-1 bg-blue-100 text-blue-600 rounded-full text-sm"> | |
| <i class="fas fa-sync-alt mr-1"></i> Sync | |
| </button> | |
| <button class="px-3 py-1 bg-gray-100 text-gray-600 rounded-full text-sm"> | |
| <i class="fas fa-filter mr-1"></i> Filter | |
| </button> | |
| </div> | |
| </div> | |
| <!-- Calendar Mini View --> | |
| <div class="bg-white rounded-xl shadow-sm p-4 mb-6"> | |
| <div class="flex justify-between items-center mb-3"> | |
| <button class="text-gray-500"> | |
| <i class="fas fa-chevron-left"></i> | |
| </button> | |
| <h3 class="font-medium">June 2024</h3> | |
| <button class="text-gray-500"> | |
| <i class="fas fa-chevron-right"></i> | |
| </button> | |
| </div> | |
| <div class="grid grid-cols-7 gap-1 text-center text-sm"> | |
| <div class="text-gray-400 py-1">S</div> | |
| <div class="text-gray-400 py-1">M</div> | |
| <div class="text-gray-400 py-1">T</div> | |
| <div class="text-gray-400 py-1">W</div> | |
| <div class="text-gray-400 py-1">T</div> | |
| <div class="text-gray-400 py-1">F</div> | |
| <div class="text-gray-400 py-1">S</div> | |
| <!-- Calendar days would be populated dynamically --> | |
| <div class="py-1">26</div> | |
| <div class="py-1">27</div> | |
| <div class="py-1">28</div> | |
| <div class="py-1">29</div> | |
| <div class="py-1">30</div> | |
| <div class="py-1">31</div> | |
| <div class="py-1">1</div> | |
| <div class="py-1">2</div> | |
| <div class="py-1">3</div> | |
| <div class="py-1">4</div> | |
| <div class="py-1">5</div> | |
| <div class="py-1">6</div> | |
| <div class="py-1">7</div> | |
| <div class="py-1">8</div> | |
| <div class="py-1">9</div> | |
| <div class="py-1">10</div> | |
| <div class="py-1">11</div> | |
| <div class="py-1">12</div> | |
| <div class="py-1">13</div> | |
| <div class="py-1">14</div> | |
| <div class="py-1">15</div> | |
| <div class="py-1">16</div> | |
| <div class="py-1">17</div> | |
| <div class="py-1">18</div> | |
| <div class="py-1">19</div> | |
| <div class="py-1">20</div> | |
| <div class="py-1">21</div> | |
| <div class="py-1">22</div> | |
| <div class="py-1">23</div> | |
| <div class="py-1">24</div> | |
| <div class="py-1 bg-blue-100 text-blue-600 rounded-full font-medium">25</div> | |
| <div class="py-1">26</div> | |
| <div class="py-1">27</div> | |
| <div class="py-1">28</div> | |
| <div class="py-1">29</div> | |
| <div class="py-1">30</div> | |
| <div class="py-1">1</div> | |
| <div class="py-1">2</div> | |
| <div class="py-1">3</div> | |
| <div class="py-1">4</div> | |
| <div class="py-1">5</div> | |
| <div class="py-1">6</div> | |
| </div> | |
| </div> | |
| <!-- Events List --> | |
| <h3 class="text-lg font-semibold text-gray-800 mb-3">Next Events</h3> | |
| <div class="space-y-4"> | |
| <!-- Event cards would be populated from API --> | |
| <div class="event-card bg-white rounded-xl shadow-sm p-4"> | |
| <div class="flex justify-between items-start mb-2"> | |
| <div> | |
| <span class="inline-block px-2 py-1 bg-blue-100 text-blue-600 rounded-full text-xs font-medium mb-1">Public Show</span> | |
| <h4 class="font-bold text-gray-800">Summer Festival</h4> | |
| </div> | |
| <div class="text-right"> | |
| <div class="text-sm text-gray-500">June 25, 2024</div> | |
| <div class="text-sm text-gray-500">20:00 - 23:00</div> | |
| </div> | |
| </div> | |
| <div class="flex items-center text-sm text-gray-600"> | |
| <i class="fas fa-map-marker-alt mr-2 text-blue-500"></i> | |
| <span>Amsterdam, NL</span> | |
| </div> | |
| <div class="mt-3 flex justify-between items-center"> | |
| <button class="text-blue-600 text-sm font-medium"> | |
| <i class="fas fa-info-circle mr-1"></i> Details | |
| </button> | |
| <button class="text-gray-600 text-sm"> | |
| <i class="fas fa-share-alt mr-1"></i> Share | |
| </button> | |
| </div> | |
| </div> | |
| <div class="event-card bg-white rounded-xl shadow-sm p-4"> | |
| <div class="flex justify-between items-start mb-2"> | |
| <div> | |
| <span class="inline-block px-2 py-1 bg-purple-100 text-purple-600 rounded-full text-xs font-medium mb-1">Private Event</span> | |
| <h4 class="font-bold text-gray-800">Corporate Party</h4> | |
| </div> | |
| <div class="text-right"> | |
| <div class="text-sm text-gray-500">July 12, 2024</div> | |
| <div class="text-sm text-gray-500">19:30 - 22:30</div> | |
| </div> | |
| </div> | |
| <div class="flex items-center text-sm text-gray-600"> | |
| <i class="fas fa-map-marker-alt mr-2 text-blue-500"></i> | |
| <span>Rotterdam, NL</span> | |
| </div> | |
| <div class="mt-3 flex justify-between items-center"> | |
| <button class="text-blue-600 text-sm font-medium"> | |
| <i class="fas fa-info-circle mr-1"></i> Details | |
| </button> | |
| <button class="text-gray-600 text-sm"> | |
| <i class="fas fa-share-alt mr-1"></i> Share | |
| </button> | |
| </div> | |
| </div> | |
| <div class="event-card bg-white rounded-xl shadow-sm p-4"> | |
| <div class="flex justify-between items-start mb-2"> | |
| <div> | |
| <span class="inline-block px-2 py-1 bg-green-100 text-green-600 rounded-full text-xs font-medium mb-1">Wedding</span> | |
| <h4 class="font-bold text-gray-800">Sarah & Mike's Wedding</h4> | |
| </div> | |
| <div class="text-right"> | |
| <div class="text-sm text-gray-500">August 3, 2024</div> | |
| <div class="text-sm text-gray-500">18:00 - 00:00</div> | |
| </div> | |
| </div> | |
| <div class="flex items-center text-sm text-gray-600"> | |
| <i class="fas fa-map-marker-alt mr-2 text-blue-500"></i> | |
| <span>Utrecht, NL</span> | |
| </div> | |
| <div class="mt-3 flex justify-between items-center"> | |
| <button class="text-blue-600 text-sm font-medium"> | |
| <i class="fas fa-info-circle mr-1"></i> Details | |
| </button> | |
| <button class="text-gray-600 text-sm"> | |
| <i class="fas fa-share-alt mr-1"></i> Share | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Booking Tab Content --> | |
| <div id="content-booking" class="hidden slide-up"> | |
| <h2 class="text-xl font-bold text-gray-800 mb-4">Book Massive Music</h2> | |
| <div class="bg-white rounded-xl shadow-sm p-4 mb-6"> | |
| <h3 class="font-medium text-gray-700 mb-3">Available Packages</h3> | |
| <div class="space-y-3"> | |
| <div class="flex items-center justify-between p-3 border border-gray-200 rounded-lg"> | |
| <div> | |
| <h4 class="font-medium">Standard Package</h4> | |
| <p class="text-sm text-gray-500">2 sets (3 hours total)</p> | |
| </div> | |
| <div class="text-right"> | |
| <div class="font-bold text-blue-600">€1,500</div> | |
| <div class="text-xs text-gray-500">+ travel costs</div> | |
| </div> | |
| </div> | |
| <div class="flex items-center justify-between p-3 border border-blue-200 rounded-lg bg-blue-50"> | |
| <div> | |
| <h4 class="font-medium">Premium Package</h4> | |
| <p class="text-sm text-gray-500">3 sets (4 hours total)</p> | |
| </div> | |
| <div class="text-right"> | |
| <div class="font-bold text-blue-600">€2,200</div> | |
| <div class="text-xs text-gray-500">+ travel costs</div> | |
| </div> | |
| </div> | |
| <div class="flex items-center justify-between p-3 border border-gray-200 rounded-lg"> | |
| <div> | |
| <h4 class="font-medium">Custom Package</h4> | |
| <p class="text-sm text-gray-500">Tailored to your needs</p> | |
| </div> | |
| <div class="text-right"> | |
| <div class="font-bold text-blue-600">Contact us</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-white rounded-xl shadow-sm p-4 mb-6"> | |
| <h3 class="font-medium text-gray-700 mb-3">Check Availability</h3> | |
| <div class="mb-4"> | |
| <label class="block text-gray-700 mb-1">Event Date</label> | |
| <div class="relative"> | |
| <input type="date" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"> | |
| <i class="fas fa-calendar-alt absolute right-3 top-3.5 text-gray-400"></i> | |
| </div> | |
| </div> | |
| <div class="mb-4"> | |
| <label class="block text-gray-700 mb-1">Event Type</label> | |
| <select class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"> | |
| <option value="">Select event type</option> | |
| <option value="wedding">Wedding</option> | |
| <option value="corporate">Corporate Event</option> | |
| <option value="festival">Festival</option> | |
| <option value="private">Private Party</option> | |
| <option value="other">Other</option> | |
| </select> | |
| </div> | |
| <button class="w-full py-3 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 transition duration-300"> | |
| Check Availability | |
| </button> | |
| </div> | |
| <div class="bg-white rounded-xl shadow-sm p-4"> | |
| <h3 class="font-medium text-gray-700 mb-3">Request Booking</h3> | |
| <div class="mb-3"> | |
| <label class="block text-gray-700 mb-1">Full Name</label> | |
| <input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="Your name"> | |
| </div> | |
| <div class="mb-3"> | |
| <label class="block text-gray-700 mb-1">Email Address</label> | |
| <input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="[email protected]"> | |
| </div> | |
| <div class="mb-3"> | |
| <label class="block text-gray-700 mb-1">Phone Number</label> | |
| <input type="tel" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="+31 6 12345678"> | |
| </div> | |
| <div class="mb-3"> | |
| <label class="block text-gray-700 mb-1">Event Details</label> | |
| <textarea class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" rows="3" placeholder="Tell us about your event..."></textarea> | |
| </div> | |
| <button class="w-full py-3 bg-green-600 text-white rounded-lg font-medium hover:bg-green-700 transition duration-300"> | |
| Send Booking Request | |
| </button> | |
| </div> | |
| </div> | |
| <!-- Contact Tab Content --> | |
| <div id="content-contact" class="hidden slide-up"> | |
| <h2 class="text-xl font-bold text-gray-800 mb-4">Contact Us</h2> | |
| <div class="bg-white rounded-xl shadow-sm p-4 mb-6"> | |
| <div class="flex items-center mb-4"> | |
| <div class="bg-blue-100 p-3 rounded-full mr-3"> | |
| <i class="fas fa-envelope text-blue-600 text-xl"></i> | |
| </div> | |
| <div> | |
| <h3 class="font-medium text-gray-800">Email</h3> | |
| <a href="mailto:[email protected]" class="text-blue-600">[email protected]</a> | |
| </div> | |
| </div> | |
| <div class="flex items-center mb-4"> | |
| <div class="bg-green-100 p-3 rounded-full mr-3"> | |
| <i class="fas fa-phone-alt text-green-600 text-xl"></i> | |
| </div> | |
| <div> | |
| <h3 class="font-medium text-gray-800">Phone</h3> | |
| <a href="tel:+31612345678" class="text-blue-600">+31 6 12345678</a> | |
| </div> | |
| </div> | |
| <div class="flex items-center"> | |
| <div class="bg-purple-100 p-3 rounded-full mr-3"> | |
| <i class="fas fa-globe-europe text-purple-600 text-xl"></i> | |
| </div> | |
| <div> | |
| <h3 class="font-medium text-gray-800">Website</h3> | |
| <a href="https://www.massivmusic.nl" target="_blank" class="text-blue-600">www.massivmusic.nl</a> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-white rounded-xl shadow-sm p-4 mb-6"> | |
| <h3 class="font-medium text-gray-700 mb-3">Social Media</h3> | |
| <div class="flex space-x-3"> | |
| <a href="#" class="flex-1 bg-blue-600 text-white py-2 px-3 rounded-lg text-center"> | |
| <i class="fab fa-facebook-f mr-2"></i> Facebook | |
| </a> | |
| <a href="#" class="flex-1 bg-pink-600 text-white py-2 px-3 rounded-lg text-center"> | |
| <i class="fab fa-instagram mr-2"></i> Instagram | |
| </a> | |
| </div> | |
| <div class="flex space-x-3 mt-3"> | |
| <a href="#" class="flex-1 bg-red-600 text-white py-2 px-3 rounded-lg text-center"> | |
| <i class="fab fa-youtube mr-2"></i> YouTube | |
| </a> | |
| <a href="#" class="flex-1 bg-blue-400 text-white py-2 px-3 rounded-lg text-center"> | |
| <i class="fab fa-twitter mr-2"></i> Twitter | |
| </a> | |
| </div> | |
| </div> | |
| <div class="bg-white rounded-xl shadow-sm p-4"> | |
| <h3 class="font-medium text-gray-700 mb-3">Quick Message</h3> | |
| <div class="mb-3"> | |
| <label class="block text-gray-700 mb-1">Your Name</label> | |
| <input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="Your name"> | |
| </div> | |
| <div class="mb-3"> | |
| <label class="block text-gray-700 mb-1">Your Email</label> | |
| <input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="[email protected]"> | |
| </div> | |
| <div class="mb-3"> | |
| <label class="block text-gray-700 mb-1">Message</label> | |
| <textarea class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" rows="3" placeholder="Your message..."></textarea> | |
| </div> | |
| <button class="w-full py-3 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 transition duration-300"> | |
| Send Message | |
| </button> | |
| </div> | |
| </div> | |
| </main> | |
| <!-- Bottom Navigation --> | |
| <nav class="bottom-nav bg-white fixed bottom-0 left-0 right-0 flex justify-around items-center"> | |
| <button class="flex flex-col items-center py-2 text-blue-600"> | |
| <i class="fas fa-calendar-alt text-lg"></i> | |
| <span class="text-xs mt-1">Agenda</span> | |
| </button> | |
| <button class="flex flex-col items-center py-2 text-gray-500"> | |
| <i class="fas fa-music text-lg"></i> | |
| <span class="text-xs mt-1">Repertoire</span> | |
| </button> | |
| <button class="flex flex-col items-center py-2 text-gray-500"> | |
| <i class="fas fa-photo-video text-lg"></i> | |
| <span class="text-xs mt-1">Media</span> | |
| </button> | |
| <button class="flex flex-col items-center py-2 text-gray-500"> | |
| <i class="fas fa-info-circle text-lg"></i> | |
| <span class="text-xs mt-1">About</span> | |
| </button> | |
| </nav> | |
| <script> | |
| // Tab switching functionality | |
| document.getElementById('tab-agenda').addEventListener('click', function() { | |
| switchTab('agenda'); | |
| }); | |
| document.getElementById('tab-booking').addEventListener('click', function() { | |
| switchTab('booking'); | |
| }); | |
| document.getElementById('tab-contact').addEventListener('click', function() { | |
| switchTab('contact'); | |
| }); | |
| function switchTab(tabName) { | |
| // Hide all content | |
| document.getElementById('content-agenda').classList.add('hidden'); | |
| document.getElementById('content-booking').classList.add('hidden'); | |
| document.getElementById('content-contact').classList.add('hidden'); | |
| // Reset all tabs | |
| document.getElementById('tab-agenda').classList.remove('text-blue-600', 'border-blue-600'); | |
| document.getElementById('tab-agenda').classList.add('text-gray-500'); | |
| document.getElementById('tab-booking').classList.remove('text-blue-600', 'border-blue-600'); | |
| document.getElementById('tab-booking').classList.add('text-gray-500'); | |
| document.getElementById('tab-contact').classList.remove('text-blue-600', 'border-blue-600'); | |
| document.getElementById('tab-contact').classList.add('text-gray-500'); | |
| // Show selected content | |
| document.getElementById('content-' + tabName).classList.remove('hidden'); | |
| document.getElementById('content-' + tabName).classList.add('slide-up'); | |
| // Highlight selected tab | |
| document.getElementById('tab-' + tabName).classList.remove('text-gray-500'); | |
| document.getElementById('tab-' + tabName).classList.add('text-blue-600', 'border-blue-600'); | |
| } | |
| // In a real app, this would sync with your WordPress site | |
| function syncWithWebsite() { | |
| // This would make an API call to your WordPress site | |
| // For example using the WordPress REST API | |
| /* | |
| fetch('https://www.massivmusic.nl/wp-json/massivmusic/v1/events') | |
| .then(response => response.json()) | |
| .then(data => { | |
| // Update the app with events from your website | |
| console.log('Synced events:', data); | |
| }); | |
| */ | |
| // For demo purposes, we'll just show an alert | |
| alert('Syncing with Massive Music website...'); | |
| } | |
| // Booking form submission | |
| function submitBooking() { | |
| // In a real app, this would send the booking request to your server | |
| // and trigger email notifications | |
| // For demo purposes, we'll just show an alert | |
| alert('Booking request sent! We will contact you soon.'); | |
| } | |
| // Message form submission | |
| function sendMessage() { | |
| // In a real app, this would send the message to your server | |
| // and trigger email notifications | |
| // For demo purposes, we'll just show an alert | |
| alert('Message sent! We will reply soon.'); | |
| } | |
| </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=Dgeneral/massiv-space" style="color: #fff;text-decoration: underline;" target="_blank" >🧬 Remix</a></p></body> | |
| </html> |