Spaces:
Sleeping
Sleeping
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>{% block title %}Cosmopedia{% endblock %}</title> | |
| <!-- Bootstrap 5 CSS --> | |
| <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"> | |
| <!-- Material Design Icons --> | |
| <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> | |
| <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined" rel="stylesheet"> | |
| <!-- FontAwesome --> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"> | |
| <!-- Google Fonts --> | |
| <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600&family=Orbitron:wght@400;700;900&display=swap" rel="stylesheet"> | |
| <!-- Space Theme CSS --> | |
| <link rel="stylesheet" href="static/css/space-theme.css"> | |
| <!-- Quantum Preloader CSS --> | |
| <link rel="stylesheet" href="static/css/quantum-preloader.css"> | |
| {% block extra_css %}{% endblock %} | |
| </head> | |
| <body> | |
| <!-- Futuristic Quantum Space Preloader - Only for Index Page, Once Per Session --> | |
| <script> | |
| </script> | |
| <!-- Debug functions for testing the quantum preloader --> | |
| <script> | |
| // Function to clear quantum preloader session for testing | |
| window.clearQuantumPreloaderSession = function() { | |
| sessionStorage.removeItem('quantumSpacePreloaderShown'); | |
| console.log('🌌 Quantum preloader session cleared. Refresh the index page to see preloader again.'); | |
| }; | |
| // Function to force show quantum preloader (only works on index page) | |
| window.forceShowQuantumPreloader = function() { | |
| const checkIsIndexPage = window.location.pathname === '/' || window.location.pathname.includes('index'); | |
| if (checkIsIndexPage) { | |
| sessionStorage.removeItem('quantumSpacePreloaderShown'); | |
| location.reload(); | |
| } else { | |
| console.log('⚠️ Quantum preloader only shows on the index page. Navigate to index page first.'); | |
| } | |
| }; | |
| // Log session status | |
| const currentIsIndexPage = window.location.pathname === '/' || window.location.pathname.includes('index'); | |
| const quantumPreloaderShown = sessionStorage.getItem('quantumSpacePreloaderShown'); | |
| if (currentIsIndexPage) { | |
| console.log('🚀 Quantum Preloader Status:', quantumPreloaderShown ? 'Already shown this session' : 'Will show on this page'); | |
| } else { | |
| console.log('📍 Current page: Not index page - Quantum preloader will not show'); | |
| } | |
| </script> | |
| <!-- Scroll Progress Indicator --> | |
| <div class="scroll-indicator"> | |
| <div class="scroll-progress" id="scrollProgress"></div> | |
| </div> | |
| <!-- Navigation --> | |
| <nav class="navbar navbar-expand-lg navbar-dark fixed-top"> | |
| <div class="container"> | |
| <a class="navbar-brand" href="{{ url_for('index') if url_for else '#' }}"> | |
| <i class="fas fa-satellite me-2"></i> | |
| Cosmopedia | |
| </a> | |
| <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"> | |
| <span class="navbar-toggler-icon"></span> | |
| </button> | |
| <div class="collapse navbar-collapse" id="navbarNav"> | |
| <ul class="navbar-nav ms-auto"> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('index') if url_for else '#' }}" title="Home" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-home"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('terminologies') if url_for else '#terminologies' }}" title="Terminologies" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-book"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('agencies') if url_for else '#agencies' }}" title="Space Agencies" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-building"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('planets') if url_for else '#planets' }}" title="Planets" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-globe"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('rockets') if url_for else '#rockets' }}" title="Rockets" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-rocket"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('astronauts') if url_for else '#astronauts' }}" title="Astronauts" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-user-astronaut"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('telescopes') if url_for else '#telescopes' }}" title="Telescopes" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-binoculars"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('museums') if url_for else '#museums' }}" title="Space Museums" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-university"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('notable_people') if url_for else '#notable-people' }}" title="Notable People" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-users"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('images') if url_for else '#images' }}" title="Images" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-images"></i> | |
| </a> | |
| </li> | |
| <li class="nav-item"> | |
| <a class="nav-link" href="{{ url_for('chat') if url_for else '#chat' }}" title="AI Chat" data-bs-toggle="tooltip" data-bs-placement="bottom"> | |
| <i class="fas fa-brain"></i> | |
| </a> | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| </nav> | |
| <!-- Main Content --> | |
| <main> | |
| {% block content %} | |
| <!-- Hero Section --> | |
| <section class="hero-section"> | |
| <div class="container"> | |
| <div class="row justify-content-center"> | |
| <div class="col-lg-8 text-center"> | |
| <h1 class="hero-title">Cosmopedia</h1> | |
| <p class="hero-subtitle mb-4"> | |
| Unified data from multiple data sources about space exploration, astronomy, and cosmic discoveries | |
| </p> | |
| <!-- Documentation and GitHub Buttons --> | |
| <div class="documentation-buttons mb-4"> | |
| <button type="button" class="btn btn-outline-info me-3" data-bs-toggle="modal" data-bs-target="#documentationModal"> | |
| <i class="fas fa-file-alt me-2"></i>Platform Documentation | |
| </button> | |
| <a href="https://github.com/aradhyapavan/space_unified_api" target="_blank" class="btn btn-outline-success"> | |
| <i class="fab fa-github me-2"></i>GitHub API Documentation | |
| </a> | |
| </div> | |
| <div class="hero-buttons"> | |
| <a href="{{ url_for('terminologies') if url_for else '#terminologies' }}" class="btn btn-primary btn-lg me-3"> | |
| <i class="fas fa-book me-2"></i>Explore Terminologies | |
| </a> | |
| <a href="{{ url_for('agencies') if url_for else '#agencies' }}" class="btn btn-outline-light btn-lg"> | |
| <i class="fas fa-building me-2"></i>View Agencies | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Features Section --> | |
| <section class="py-5"> | |
| <div class="container"> | |
| <div class="row g-4"> | |
| <div class="col-md-4"> | |
| <div class="card h-100 text-center glow-on-hover"> | |
| <div class="card-body"> | |
| <i class="fas fa-book feature-icon"></i> | |
| <h5 class="card-title">Space Terminologies</h5> | |
| <p class="card-text">Explore comprehensive space terminology and definitions with detailed explanations and scientific context.</p> | |
| <a href="{{ url_for('terminologies') if url_for else '#terminologies' }}" class="btn btn-primary btn-sm">Explore</a> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="col-md-4"> | |
| <div class="card h-100 text-center glow-on-hover"> | |
| <div class="card-body"> | |
| <i class="fas fa-building feature-icon"></i> | |
| <h5 class="card-title">Space Agencies</h5> | |
| <p class="card-text">Discover space agencies from around the world, from government organizations to private companies.</p> | |
| <a href="{{ url_for('agencies') if url_for else '#agencies' }}" class="btn btn-primary btn-sm">Discover</a> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="col-md-4"> | |
| <div class="card h-100 text-center glow-on-hover"> | |
| <div class="card-body"> | |
| <i class="fas fa-globe feature-icon"></i> | |
| <h5 class="card-title">Planets</h5> | |
| <p class="card-text">Learn about the planets in our solar system with scientific data and stunning visuals.</p> | |
| <a href="{{ url_for('planets') if url_for else '#planets' }}" class="btn btn-primary btn-sm">Learn</a> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| {% endblock %} | |
| </main> | |
| <!-- Footer --> | |
| <footer class="footer"> | |
| <div class="container"> | |
| <div class="row justify-content-center"> | |
| <div class="col-md-6 text-center"> | |
| <div class="credit-box"> | |
| <small> | |
| <i class="fas fa-code me-1"></i> | |
| Designed and Developed by Aradhya Pavan H S | |
| </small> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </footer> | |
| <!-- Documentation Modal --> | |
| <div class="modal fade" id="documentationModal" tabindex="-1" aria-labelledby="documentationModalLabel" aria-hidden="true"> | |
| <div class="modal-dialog modal-lg modal-dialog-scrollable"> | |
| <div class="modal-content"> | |
| <div class="modal-header"> | |
| <h5 class="modal-title" id="documentationModalLabel"> | |
| <i class="fas fa-file-alt me-2"></i> | |
| Cosmopedia Documentation | |
| </h5> | |
| <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> | |
| </div> | |
| <div class="modal-body"> | |
| <div class="documentation-content"> | |
| <!-- Introduction Section --> | |
| <section class="mb-4"> | |
| <h4 class="text-primary"> | |
| <i class="fas fa-satellite me-2"></i> | |
| Welcome to Cosmopedia | |
| </h4> | |
| <p>Cosmopedia is a comprehensive platform that provides unified data from multiple sources about space exploration, astronomy, and cosmic discoveries. Our platform aggregates information about space agencies, planets, rockets, astronauts, telescopes, and more.</p> | |
| </section> | |
| <!-- Features Section --> | |
| <section class="mb-4"> | |
| <h4 class="text-primary"> | |
| <i class="fas fa-star me-2"></i> | |
| Platform Features | |
| </h4> | |
| <div class="row"> | |
| <div class="col-md-6"> | |
| <ul class="list-unstyled"> | |
| <li class="mb-2"> | |
| <i class="fas fa-book text-info me-2"></i> | |
| <strong>Space Terminologies:</strong> Comprehensive glossary of space-related terms | |
| </li> | |
| <li class="mb-2"> | |
| <i class="fas fa-building text-info me-2"></i> | |
| <strong>Space Agencies:</strong> Information about global space organizations | |
| </li> | |
| <li class="mb-2"> | |
| <i class="fas fa-globe text-info me-2"></i> | |
| <strong>Solar System:</strong> Detailed data about planets and celestial bodies | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="col-md-6"> | |
| <ul class="list-unstyled"> | |
| <li class="mb-2"> | |
| <i class="fas fa-rocket text-info me-2"></i> | |
| <strong>Rockets & Launch Vehicles:</strong> Launch vehicle specifications and history | |
| </li> | |
| <li class="mb-2"> | |
| <i class="fas fa-user-astronaut text-info me-2"></i> | |
| <strong>Astronauts:</strong> Profiles of space explorers and their missions | |
| </li> | |
| <li class="mb-2"> | |
| <i class="fas fa-binoculars text-info me-2"></i> | |
| <strong>Telescopes:</strong> Space and ground-based observation instruments | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Navigation Guide --> | |
| <section class="mb-4"> | |
| <h4 class="text-primary"> | |
| <i class="fas fa-compass me-2"></i> | |
| Navigation Guide | |
| </h4> | |
| <div class="alert alert-info"> | |
| <strong>Quick Navigation:</strong> Use the navigation bar at the top to access different sections. Each icon represents a specific category of space information. | |
| </div> | |
| <div class="row"> | |
| <div class="col-md-4 mb-3"> | |
| <div class="card bg-dark text-light"> | |
| <div class="card-body text-center"> | |
| <i class="fas fa-home fa-2x mb-2 text-primary"></i> | |
| <h6>Home</h6> | |
| <small>Main dashboard with overview</small> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="col-md-4 mb-3"> | |
| <div class="card bg-dark text-light"> | |
| <div class="card-body text-center"> | |
| <img src="https://img.icons8.com/stickers/100/bard.png" alt="AI" style="width: 48px; height: 48px; filter: brightness(0) invert(1); margin-bottom: 0.5rem;"> | |
| <h6>AI Chat</h6> | |
| <small>Interactive space knowledge assistant</small> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="col-md-4 mb-3"> | |
| <div class="card bg-dark text-light"> | |
| <div class="card-body text-center"> | |
| <i class="fas fa-images fa-2x mb-2 text-primary"></i> | |
| <h6>Space Images</h6> | |
| <small>Stunning space photography collection</small> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Technical Information --> | |
| <section class="mb-4"> | |
| <h4 class="text-primary"> | |
| <i class="fas fa-cogs me-2"></i> | |
| Technical Information | |
| </h4> | |
| <div class="row"> | |
| <div class="col-md-6"> | |
| <h6 class="text-secondary">Data Sources:</h6> | |
| <ul class="small"> | |
| <li>NASA Open Data Portal</li> | |
| <li>ESA (European Space Agency)</li> | |
| <li>Space agencies worldwide</li> | |
| <li>Astronomical databases</li> | |
| </ul> | |
| </div> | |
| <div class="col-md-6"> | |
| <h6 class="text-secondary">Technologies Used:</h6> | |
| <ul class="small"> | |
| <li>Flask (Python Web Framework)</li> | |
| <li>Bootstrap 5 (UI Framework)</li> | |
| <li>Vector Search & AI Integration</li> | |
| <li>Responsive Design</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Contact Information --> | |
| <section class="mb-4"> | |
| <h4 class="text-primary"> | |
| <i class="fas fa-envelope me-2"></i> | |
| Contact & Support | |
| </h4> | |
| <div class="alert alert-dark"> | |
| <p class="mb-2"> | |
| <strong>Developer:</strong> Aradhya Pavan H S | |
| </p> | |
| <p class="mb-2"> | |
| <i class="fas fa-envelope me-2"></i> | |
| For technical support or feature requests, please contact the development team. | |
| </p> | |
| <p class="mb-0"> | |
| <i class="fas fa-github me-2"></i> | |
| This project is part of ongoing space technology initiatives. | |
| </p> | |
| </div> | |
| </section> | |
| <!-- Version Information --> | |
| <section> | |
| <h4 class="text-primary"> | |
| <i class="fas fa-info-circle me-2"></i> | |
| Version Information | |
| </h4> | |
| <div class="text-muted small"> | |
| <p>Cosmopedia Platform v2.0</p> | |
| <p>Last Updated: July 2025</p> | |
| <p>Platform Status: Active Development</p> | |
| </div> | |
| </section> | |
| </div> | |
| </div> | |
| <div class="modal-footer"> | |
| <button type="button" class="btn btn-primary" data-bs-dismiss="modal"> | |
| <i class="fas fa-times me-2"></i> | |
| Close | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Bootstrap JS --> | |
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> | |
| <!-- Custom JavaScript --> | |
| <script src="static/js/space-theme.js"></script> | |
| <!-- Ultimate Space Preloader --> | |
| <script src="static/js/preloader-clean.js"></script> | |
| <!-- Initialize tooltips and other scripts --> | |
| <script> | |
| // Scroll progress indicator | |
| window.addEventListener('scroll', function() { | |
| const scrollProgress = document.getElementById('scrollProgress'); | |
| const scrollTop = window.pageYOffset; | |
| const docHeight = document.body.scrollHeight - window.innerHeight; | |
| const scrollPercent = (scrollTop / docHeight) * 100; | |
| scrollProgress.style.width = scrollPercent + '%'; | |
| }); | |
| // Initialize tooltips | |
| var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) | |
| var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { | |
| return new bootstrap.Tooltip(tooltipTriggerEl) | |
| }) | |
| // Enhanced modal functionality | |
| document.addEventListener('DOMContentLoaded', function() { | |
| // Add click event listener to documentation button | |
| const docButton = document.querySelector('[data-bs-target="#documentationModal"]'); | |
| if (docButton) { | |
| docButton.addEventListener('click', function(e) { | |
| console.log('Documentation button clicked'); | |
| console.log('Bootstrap available:', typeof bootstrap !== 'undefined'); | |
| console.log('Modal element exists:', document.getElementById('documentationModal') !== null); | |
| // Manual trigger as backup | |
| const modal = document.getElementById('documentationModal'); | |
| if (modal && typeof bootstrap !== 'undefined') { | |
| const bsModal = new bootstrap.Modal(modal); | |
| bsModal.show(); | |
| } | |
| }); | |
| } | |
| // Ensure preloader doesn't interfere with modal interactions | |
| const modal = document.getElementById('documentationModal'); | |
| if (modal) { | |
| modal.addEventListener('shown.bs.modal', function() { | |
| // Ensure preloader is hidden when modal is shown | |
| const preloader = document.getElementById('spacePreloader'); | |
| if (preloader) { | |
| preloader.style.display = 'none'; | |
| } | |
| }); | |
| modal.addEventListener('hidden.bs.modal', function() { | |
| // Ensure page remains interactive after modal close | |
| document.body.style.overflow = ''; | |
| document.body.style.pointerEvents = ''; | |
| // Remove any modal backdrop that might persist | |
| const backdrops = document.querySelectorAll('.modal-backdrop'); | |
| backdrops.forEach(backdrop => backdrop.remove()); | |
| // Ensure no preloader appears after modal close | |
| const preloader = document.getElementById('spacePreloader'); | |
| if (preloader) { | |
| preloader.remove(); | |
| } | |
| // Call global clear function if available | |
| if (window.clearPreloader) { | |
| window.clearPreloader(); | |
| } | |
| }); | |
| } | |
| // Add magnetic effect to navigation items | |
| const navLinks = document.querySelectorAll('.nav-link'); | |
| navLinks.forEach(link => { | |
| link.addEventListener('mouseenter', function() { | |
| this.style.transform = 'translateY(-3px) scale(1.05)'; | |
| }); | |
| link.addEventListener('mouseleave', function() { | |
| this.style.transform = 'translateY(0) scale(1)'; | |
| }); | |
| }); | |
| // Add smooth scroll behavior | |
| document.querySelectorAll('a[href^="#"]').forEach(anchor => { | |
| anchor.addEventListener('click', function (e) { | |
| e.preventDefault(); | |
| const target = document.querySelector(this.getAttribute('href')); | |
| if (target) { | |
| target.scrollIntoView({ | |
| behavior: 'smooth', | |
| block: 'start' | |
| }); | |
| } | |
| }); | |
| }); | |
| }); | |
| </script> | |
| <!-- Performance Optimization JS --> | |
| <script src="static/js/performance.js"></script> | |
| <!-- Immediate fix for scroll issues - runs as early as possible --> | |
| <script> | |
| // CRITICAL: Immediate restoration of scroll functionality | |
| (function() { | |
| // Force restore scroll immediately | |
| function restoreScroll() { | |
| document.documentElement.style.overflow = 'auto'; | |
| document.body.style.overflow = 'auto'; | |
| document.body.style.pointerEvents = 'auto'; | |
| document.body.classList.remove('preloader-active'); | |
| } | |
| // Run immediately | |
| restoreScroll(); | |
| // Run after a short delay | |
| setTimeout(restoreScroll, 100); | |
| // Run when DOM is ready | |
| if (document.readyState === 'loading') { | |
| document.addEventListener('DOMContentLoaded', restoreScroll); | |
| } else { | |
| restoreScroll(); | |
| } | |
| // Global emergency function | |
| window.emergencyScrollFix = restoreScroll; | |
| })(); | |
| </script> | |
| {% block extra_js %}{% endblock %} | |
| </body> | |
| </html> | |