Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>aWiFi - Find Free WiFi Spots</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> | |
| .map-container { | |
| height: 500px; | |
| background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .wifi-spot { | |
| position: absolute; | |
| width: 16px; | |
| height: 16px; | |
| background-color: #3b82f6; | |
| border-radius: 50%; | |
| border: 2px solid white; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .wifi-spot:hover { | |
| transform: scale(1.5); | |
| background-color: #2563eb; | |
| } | |
| .wifi-spot.active { | |
| transform: scale(1.5); | |
| background-color: #1d4ed8; | |
| box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.3); | |
| } | |
| .pulse { | |
| animation: pulse 2s infinite; | |
| } | |
| @keyframes pulse { | |
| 0% { | |
| transform: scale(0.95); | |
| box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.7); | |
| } | |
| 70% { | |
| transform: scale(1); | |
| box-shadow: 0 0 0 10px rgba(59, 130, 246, 0); | |
| } | |
| 100% { | |
| transform: scale(0.95); | |
| box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); | |
| } | |
| } | |
| .search-container { | |
| position: relative; | |
| } | |
| .search-icon { | |
| position: absolute; | |
| left: 12px; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| } | |
| .search-input { | |
| padding-left: 40px; | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-50 font-sans"> | |
| <header class="bg-white shadow-sm"> | |
| <div class="container mx-auto px-4 py-4 flex justify-between items-center"> | |
| <div class="flex items-center"> | |
| <div class="w-10 h-10 rounded-full bg-blue-500 flex items-center justify-center text-white font-bold mr-3"> | |
| aW | |
| </div> | |
| <h1 class="text-xl font-bold text-gray-800">aWiFi</h1> | |
| </div> | |
| <nav class="hidden md:flex space-x-6"> | |
| <a href="#" class="text-blue-500 font-medium">Map</a> | |
| <a href="#" class="text-gray-600 hover:text-blue-500">Add Spot</a> | |
| <a href="#" class="text-gray-600 hover:text-blue-500">About</a> | |
| <a href="#" class="text-gray-600 hover:text-blue-500">Contact</a> | |
| </nav> | |
| <div class="flex items-center space-x-4"> | |
| <button class="hidden md:block px-4 py-2 text-blue-500 border border-blue-500 rounded-md hover:bg-blue-50"> | |
| Sign In | |
| </button> | |
| <button class="px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600"> | |
| Sign Up | |
| </button> | |
| <button class="md:hidden text-gray-600"> | |
| <i class="fas fa-bars text-xl"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </header> | |
| <main class="container mx-auto px-4 py-8"> | |
| <div class="mb-8 text-center"> | |
| <h2 class="text-3xl md:text-4xl font-bold text-gray-800 mb-4">Find Free WiFi Spots Near You</h2> | |
| <p class="text-lg text-gray-600 max-w-2xl mx-auto"> | |
| Discover and share free WiFi hotspots around the world. Connect anywhere, anytime. | |
| </p> | |
| </div> | |
| <div class="search-container mb-8 max-w-2xl mx-auto"> | |
| <div class="search-icon text-gray-400"> | |
| <i class="fas fa-search"></i> | |
| </div> | |
| <input type="text" placeholder="Search for locations, cafes, or addresses..." | |
| class="search-input w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"> | |
| </div> | |
| <div class="bg-white rounded-xl shadow-md overflow-hidden mb-8"> | |
| <div class="map-container" id="map"> | |
| <!-- WiFi spots will be added dynamically --> | |
| </div> | |
| </div> | |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-12"> | |
| <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow"> | |
| <div class="w-12 h-12 bg-blue-100 rounded-full flex items-center justify-center text-blue-500 mb-4"> | |
| <i class="fas fa-wifi text-xl"></i> | |
| </div> | |
| <h3 class="text-xl font-semibold mb-2">Find WiFi</h3> | |
| <p class="text-gray-600">Discover thousands of free WiFi spots around you with detailed information about speed and reliability.</p> | |
| </div> | |
| <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow"> | |
| <div class="w-12 h-12 bg-green-100 rounded-full flex items-center justify-center text-green-500 mb-4"> | |
| <i class="fas fa-plus text-xl"></i> | |
| </div> | |
| <h3 class="text-xl font-semibold mb-2">Add Spots</h3> | |
| <p class="text-gray-600">Contribute to the community by adding new WiFi spots you discover in your travels.</p> | |
| </div> | |
| <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow"> | |
| <div class="w-12 h-12 bg-purple-100 rounded-full flex items-center justify-center text-purple-500 mb-4"> | |
| <i class="fas fa-heart text-xl"></i> | |
| </div> | |
| <h3 class="text-xl font-semibold mb-2">Save Favorites</h3> | |
| <p class="text-gray-600">Bookmark your favorite spots for quick access when you need them most.</p> | |
| </div> | |
| </div> | |
| <div class="bg-blue-50 rounded-xl p-8 md:p-12 mb-12"> | |
| <div class="max-w-3xl mx-auto text-center"> | |
| <h2 class="text-2xl md:text-3xl font-bold text-gray-800 mb-4">Join Our Community</h2> | |
| <p class="text-lg text-gray-600 mb-6"> | |
| Be part of a global community helping people stay connected. Share WiFi spots, rate connections, and help others find the best places to work remotely. | |
| </p> | |
| <button class="px-6 py-3 bg-blue-500 text-white rounded-lg hover:bg-blue-600 font-medium"> | |
| Sign Up Now | |
| </button> | |
| </div> | |
| </div> | |
| </main> | |
| <footer class="bg-gray-800 text-white py-12"> | |
| <div class="container mx-auto px-4"> | |
| <div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8"> | |
| <div> | |
| <div class="flex items-center mb-4"> | |
| <div class="w-10 h-10 rounded-full bg-blue-500 flex items-center justify-center text-white font-bold mr-3"> | |
| aW | |
| </div> | |
| <h3 class="text-xl font-bold">aWiFi</h3> | |
| </div> | |
| <p class="text-gray-400"> | |
| Connecting people to free WiFi spots around the world since 2023. | |
| </p> | |
| </div> | |
| <div> | |
| <h4 class="text-lg font-semibold mb-4">Explore</h4> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Map</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Popular Spots</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Cities</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Categories</a></li> | |
| </ul> | |
| </div> | |
| <div> | |
| <h4 class="text-lg font-semibold mb-4">Community</h4> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Guidelines</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Contributors</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Blog</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Forum</a></li> | |
| </ul> | |
| </div> | |
| <div> | |
| <h4 class="text-lg font-semibold mb-4">Company</h4> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="text-gray-400 hover:text-white">About Us</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Careers</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Privacy</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white">Terms</a></li> | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="pt-8 border-t border-gray-700 flex flex-col md:flex-row justify-between items-center"> | |
| <p class="text-gray-400 mb-4 md:mb-0"> | |
| © 2023 aWiFi. All rights reserved. | |
| </p> | |
| <div class="flex space-x-4"> | |
| <a href="#" class="text-gray-400 hover:text-white"> | |
| <i class="fab fa-twitter text-xl"></i> | |
| </a> | |
| <a href="#" class="text-gray-400 hover:text-white"> | |
| <i class="fab fa-instagram text-xl"></i> | |
| </a> | |
| <a href="#" class="text-gray-400 hover:text-white"> | |
| <i class="fab fa-facebook text-xl"></i> | |
| </a> | |
| <a href="#" class="text-gray-400 hover:text-white"> | |
| <i class="fab fa-github text-xl"></i> | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| </footer> | |
| <div id="spot-details" class="fixed bottom-0 left-0 right-0 bg-white shadow-lg rounded-t-xl transform translate-y-full transition-transform duration-300 z-10 max-w-2xl mx-auto"> | |
| <div class="p-6"> | |
| <div class="flex justify-between items-start mb-4"> | |
| <div> | |
| <h3 class="text-xl font-bold">Starbucks Downtown</h3> | |
| <p class="text-gray-600">123 Main Street, New York</p> | |
| </div> | |
| <button id="close-details" class="text-gray-400 hover:text-gray-600"> | |
| <i class="fas fa-times"></i> | |
| </button> | |
| </div> | |
| <div class="flex items-center mb-4"> | |
| <div class="flex items-center mr-4"> | |
| <i class="fas fa-wifi text-blue-500 mr-2"></i> | |
| <span>Fast (25 Mbps)</span> | |
| </div> | |
| <div class="flex items-center mr-4"> | |
| <i class="fas fa-coffee text-orange-500 mr-2"></i> | |
| <span>Cafe</span> | |
| </div> | |
| <div class="flex items-center"> | |
| <i class="fas fa-star text-yellow-500 mr-2"></i> | |
| <span>4.8 (124)</span> | |
| </div> | |
| </div> | |
| <p class="text-gray-700 mb-4"> | |
| Free WiFi for customers. Password changes monthly and is displayed at the counter. Great place to work with plenty of outlets. | |
| </p> | |
| <div class="flex space-x-3"> | |
| <button class="px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 flex items-center"> | |
| <i class="fas fa-directions mr-2"></i> Directions | |
| </button> | |
| <button class="px-4 py-2 border border-gray-300 rounded-lg hover:bg-gray-50 flex items-center"> | |
| <i class="fas fa-heart mr-2 text-red-500"></i> Save | |
| </button> | |
| <button class="px-4 py-2 border border-gray-300 rounded-lg hover:bg-gray-50 flex items-center"> | |
| <i class="fas fa-share-alt mr-2"></i> Share | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| <script> | |
| // Generate random WiFi spots on the map | |
| const map = document.getElementById('map'); | |
| const spotDetails = document.getElementById('spot-details'); | |
| const closeDetails = document.getElementById('close-details'); | |
| // Create 20 random WiFi spots | |
| for (let i = 0; i < 20; i++) { | |
| const spot = document.createElement('div'); | |
| spot.className = 'wifi-spot'; | |
| // Random position within the map container | |
| const x = Math.random() * 90 + 5; // 5-95% | |
| const y = Math.random() * 90 + 5; // 5-95% | |
| spot.style.left = `${x}%`; | |
| spot.style.top = `${y}%`; | |
| // Add pulse animation to some spots | |
| if (Math.random() > 0.7) { | |
| spot.classList.add('pulse'); | |
| } | |
| // Add click event to show details | |
| spot.addEventListener('click', function(e) { | |
| e.stopPropagation(); | |
| // Remove active class from all spots | |
| document.querySelectorAll('.wifi-spot').forEach(s => { | |
| s.classList.remove('active'); | |
| }); | |
| // Add active class to clicked spot | |
| this.classList.add('active'); | |
| // Show details panel | |
| spotDetails.classList.remove('translate-y-full'); | |
| }); | |
| map.appendChild(spot); | |
| } | |
| // Close details when clicking the close button | |
| closeDetails.addEventListener('click', function() { | |
| spotDetails.classList.add('translate-y-full'); | |
| document.querySelectorAll('.wifi-spot').forEach(s => { | |
| s.classList.remove('active'); | |
| }); | |
| }); | |
| // Close details when clicking outside | |
| document.addEventListener('click', function() { | |
| spotDetails.classList.add('translate-y-full'); | |
| document.querySelectorAll('.wifi-spot').forEach(s => { | |
| s.classList.remove('active'); | |
| }); | |
| }); | |
| // Prevent details panel from closing when clicking inside it | |
| spotDetails.addEventListener('click', function(e) { | |
| e.stopPropagation(); | |
| }); | |
| // Mobile menu toggle (placeholder functionality) | |
| document.querySelector('.md\\:hidden').addEventListener('click', function() { | |
| alert('Mobile menu would open here'); | |
| }); | |
| </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=bibbler/awifi-place" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
| </html> |