Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Python2APK Alchemist | Transform Python to Android APK</title> | |
| <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.waves.min.js"></script> | |
| <script> | |
| tailwind.config = { | |
| theme: { | |
| extend: { | |
| colors: { | |
| primary: { | |
| 100: '#d1fae5', | |
| 500: '#10b981', | |
| 900: '#064e3b', | |
| }, | |
| secondary: { | |
| 100: '#fef3c7', | |
| 500: '#f59e0b', | |
| 900: '#78350f', | |
| } | |
| } | |
| } | |
| } | |
| } | |
| </script> | |
| <style> | |
| .hero-gradient { | |
| background: linear-gradient(135deg, rgba(16,185,129,0.1) 0%, rgba(245,158,11,0.1) 100%); | |
| } | |
| .feature-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); | |
| } | |
| .code-block { | |
| font-family: 'Courier New', monospace; | |
| background-color: #1e293b; | |
| border-radius: 0.5rem; | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-50 min-h-screen"> | |
| <div id="vanta-bg" class="fixed inset-0 -z-10"></div> | |
| <!-- Navigation --> | |
| <nav class="bg-white bg-opacity-90 backdrop-blur-md shadow-sm sticky top-0 z-50"> | |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
| <div class="flex justify-between h-16 items-center"> | |
| <div class="flex items-center space-x-4"> | |
| <i data-feather="box" class="text-primary-500 h-6 w-6"></i> | |
| <span class="text-xl font-bold bg-gradient-to-r from-primary-500 to-secondary-500 bg-clip-text text-transparent">Python2APK</span> | |
| </div> | |
| <div class="hidden md:flex space-x-8"> | |
| <a href="#" class="text-gray-700 hover:text-primary-500 font-medium">Home</a> | |
| <a href="#" class="text-gray-700 hover:text-primary-500 font-medium">Features</a> | |
| <a href="#" class="text-gray-700 hover:text-primary-500 font-medium">How It Works</a> | |
| <a href="#" class="text-gray-700 hover:text-primary-500 font-medium">Pricing</a> | |
| </div> | |
| <button class="bg-gradient-to-r from-primary-500 to-secondary-500 text-white px-4 py-2 rounded-md font-medium hover:opacity-90 transition-opacity"> | |
| Get Started | |
| </button> | |
| <button class="md:hidden"> | |
| <i data-feather="menu" class="h-6 w-6 text-gray-600"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </nav> | |
| <!-- Hero Section --> | |
| <section class="hero-gradient py-20"> | |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
| <div class="grid md:grid-cols-2 gap-12 items-center"> | |
| <div> | |
| <h1 class="text-4xl md:text-5xl font-bold text-gray-800 mb-6"> | |
| Turn Your <span class="text-primary-500">Python</span> Code Into <span class="text-secondary-500">Android APK</span> | |
| </h1> | |
| <p class="text-lg text-gray-600 mb-8"> | |
| The easiest way to convert your Python scripts into fully functional Android applications. No Java/Kotlin required. | |
| </p> | |
| <div class="flex flex-wrap gap-4"> | |
| <a href="#uploadForm" class="bg-gradient-to-r from-primary-500 to-secondary-500 text-white px-6 py-3 rounded-lg font-medium hover:shadow-lg transition-all"> | |
| Try It Now | |
| </a> | |
| <button class="border-2 border-primary-500 text-primary-500 px-6 py-3 rounded-lg font-medium hover:bg-primary-50 transition-all"> | |
| See Demo | |
| </button> | |
| </div> | |
| </div> | |
| <div class="relative"> | |
| <div class="bg-white p-6 rounded-xl shadow-xl"> | |
| <div class="flex space-x-2 mb-4"> | |
| <div class="w-3 h-3 rounded-full bg-red-500"></div> | |
| <div class="w-3 h-3 rounded-full bg-yellow-500"></div> | |
| <div class="w-3 h-3 rounded-full bg-green-500"></div> | |
| </div> | |
| <div class="code-block p-4 text-white"> | |
| <form id="uploadForm" enctype="multipart/form-data"> | |
| <div class="mb-4"> | |
| <label class="block text-gray-300 text-sm mb-2" for="pythonFile"> | |
| Upload Python File | |
| </label> | |
| <input type="file" id="pythonFile" name="pythonFile" accept=".py" | |
| class="w-full px-3 py-2 bg-gray-800 border border-gray-700 rounded-md text-white"> | |
| </div> | |
| <div class="mb-4"> | |
| <label class="block text-gray-300 text-sm mb-2" for="appName"> | |
| App Name | |
| </label> | |
| <input type="text" id="appName" name="appName" placeholder="My Python App" | |
| class="w-full px-3 py-2 bg-gray-800 border border-gray-700 rounded-md text-white"> | |
| </div> | |
| <div class="flex justify-end"> | |
| <button type="submit" class="flex items-center bg-primary-500 hover:bg-primary-600 text-white px-4 py-2 rounded-md text-sm transition-colors"> | |
| <i data-feather="upload" class="mr-2 h-4 w-4"></i> | |
| Convert to APK | |
| </button> | |
| </div> | |
| </form> | |
| </div> | |
| <div id="resultContainer" class="hidden mt-4 p-4 bg-gray-800 rounded-md"> | |
| <div id="conversionStatus" class="flex items-center"> | |
| <i data-feather="loader" class="animate-spin mr-2 text-yellow-500"></i> | |
| <span>Converting your Python file...</span> | |
| </div> | |
| <div id="downloadBtn" class="hidden mt-4"> | |
| <a href="#" class="flex items-center justify-center bg-green-500 hover:bg-green-600 text-white px-4 py-2 rounded-md text-sm transition-colors"> | |
| <i data-feather="download" class="mr-2 h-4 w-4"></i> | |
| Download APK | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="absolute -bottom-6 -right-6 bg-white p-2 rounded-full shadow-lg"> | |
| <div class="bg-secondary-500 p-3 rounded-full"> | |
| <i data-feather="arrow-right" class="text-white h-6 w-6"></i> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Features Section --> | |
| <section class="py-20 bg-white"> | |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
| <div class="text-center mb-16"> | |
| <h2 class="text-3xl font-bold text-gray-800 mb-4">Magical Conversion Features</h2> | |
| <p class="text-lg text-gray-600 max-w-2xl mx-auto">Everything you need to bring your Python apps to Android</p> | |
| </div> | |
| <div class="grid md:grid-cols-3 gap-8"> | |
| <div class="feature-card bg-white p-8 rounded-xl shadow-md hover:shadow-xl transition-all duration-300 border-t-4 border-primary-500"> | |
| <div class="bg-primary-100 p-3 rounded-full w-12 h-12 flex items-center justify-center mb-6"> | |
| <i data-feather="zap" class="text-primary-500 h-6 w-6"></i> | |
| </div> | |
| <h3 class="text-xl font-bold text-gray-800 mb-3">One-Click Conversion</h3> | |
| <p class="text-gray-600">Convert your Python scripts to APK with a single command. No complex setup required.</p> | |
| </div> | |
| <div class="feature-card bg-white p-8 rounded-xl shadow-md hover:shadow-xl transition-all duration-300 border-t-4 border-secondary-500"> | |
| <div class="bg-secondary-100 p-3 rounded-full w-12 h-12 flex items-center justify-center mb-6"> | |
| <i data-feather="package" class="text-secondary-500 h-6 w-6"></i> | |
| </div> | |
| <h3 class="text-xl font-bold text-gray-800 mb-3">Full Android Support</h3> | |
| <p class="text-gray-600">Access to all Android APIs, sensors, and hardware features from your Python code.</p> | |
| </div> | |
| <div class="feature-card bg-white p-8 rounded-xl shadow-md hover:shadow-xl transition-all duration-300 border-t-4 border-primary-500"> | |
| <div class="bg-primary-100 p-3 rounded-full w-12 h-12 flex items-center justify-center mb-6"> | |
| <i data-feather="cpu" class="text-primary-500 h-6 w-6"></i> | |
| </div> | |
| <h3 class="text-xl font-bold text-gray-800 mb-3">Optimized Performance</h3> | |
| <p class="text-gray-600">Our engine compiles Python to optimized native code for the best possible performance.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- How It Works --> | |
| <section class="py-20 bg-gray-50"> | |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
| <div class="text-center mb-16"> | |
| <h2 class="text-3xl font-bold text-gray-800 mb-4">How It Works</h2> | |
| <p class="text-lg text-gray-600 max-w-2xl mx-auto">Transform your Python code in just 3 simple steps</p> | |
| </div> | |
| <div class="grid md:grid-cols-3 gap-8 mb-12"> | |
| <div class="flex flex-col items-center text-center"> | |
| <div class="bg-primary-100 text-primary-500 rounded-full w-16 h-16 flex items-center justify-center mb-4 text-2xl font-bold">1</div> | |
| <h3 class="text-xl font-bold text-gray-800 mb-2">Write Python Code</h3> | |
| <p class="text-gray-600">Create your application using Python and any compatible framework like Kivy, Pygame, or standard Python.</p> | |
| </div> | |
| <div class="flex flex-col items-center text-center"> | |
| <div class="bg-secondary-100 text-secondary-500 rounded-full w-16 h-16 flex items-center justify-center mb-4 text-2xl font-bold">2</div> | |
| <h3 class="text-xl font-bold text-gray-800 mb-2">Run Conversion</h3> | |
| <p class="text-gray-600">Use our CLI tool or web interface to package your code into an APK with all dependencies included.</p> | |
| </div> | |
| <div class="flex flex-col items-center text-center"> | |
| <div class="bg-primary-100 text-primary-500 rounded-full w-16 h-16 flex items-center justify-center mb-4 text-2xl font-bold">3</div> | |
| <h3 class="text-xl font-bold text-gray-800 mb-2">Install & Run</h3> | |
| <p class="text-gray-600">Install the generated APK on any Android device and enjoy your Python app running natively.</p> | |
| </div> | |
| </div> | |
| <div class="bg-white rounded-xl shadow-md overflow-hidden"> | |
| <div class="grid md:grid-cols-2"> | |
| <div class="p-8"> | |
| <h3 class="text-2xl font-bold text-gray-800 mb-4">Advanced Features</h3> | |
| <ul class="space-y-4"> | |
| <li class="flex items-start"> | |
| <i data-feather="check-circle" class="text-primary-500 mr-3 mt-1 flex-shrink-0"></i> | |
| <span class="text-gray-700">Automatic dependency resolution</span> | |
| </li> | |
| <li class="flex items-start"> | |
| <i data-feather="check-circle" class="text-primary-500 mr-3 mt-1 flex-shrink-0"></i> | |
| <span class="text-gray-700">Custom app icons and splash screens</span> | |
| </li> | |
| <li class="flex items-start"> | |
| <i data-feather="check-circle" class="text-primary-500 mr-3 mt-1 flex-shrink-0"></i> | |
| <span class="text-gray-700">Permissions management</span> | |
| </li> | |
| <li class="flex items-start"> | |
| <i data-feather="check-circle" class="text-primary-500 mr-3 mt-1 flex-shrink-0"></i> | |
| <span class="text-gray-700">APK signing for Play Store submission</span> | |
| </li> | |
| </ul> | |
| </div> | |
| <div class="bg-gray-50 p-8 flex items-center justify-center"> | |
| <div class="relative"> | |
| <img src="http://static.photos/technology/640x360/42" alt="Python to APK conversion" class="rounded-lg shadow-md w-full max-w-md"> | |
| <div class="absolute -bottom-4 -right-4 bg-white p-2 rounded-full shadow-lg"> | |
| <div class="bg-primary-500 p-3 rounded-full"> | |
| <i data-feather="smartphone" class="text-white h-6 w-6"></i> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- CTA Section --> | |
| <section class="py-20 bg-gradient-to-r from-primary-500 to-secondary-500"> | |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center"> | |
| <h2 class="text-3xl font-bold text-white mb-6">Ready to Transform Your Python Code?</h2> | |
| <p class="text-xl text-primary-100 mb-8 max-w-3xl mx-auto">Join thousands of developers who are building Android apps with Python today.</p> | |
| <div class="flex flex-wrap justify-center gap-4"> | |
| <button class="bg-white text-primary-500 px-8 py-4 rounded-lg font-bold hover:bg-gray-100 transition-all shadow-lg"> | |
| Get Started for Free | |
| </button> | |
| <button class="border-2 border-white text-white px-8 py-4 rounded-lg font-bold hover:bg-white hover:bg-opacity-10 transition-all"> | |
| View Documentation | |
| </button> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Footer --> | |
| <footer class="bg-gray-900 text-white py-12"> | |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
| <div class="grid md:grid-cols-4 gap-8"> | |
| <div> | |
| <div class="flex items-center space-x-2 mb-4"> | |
| <i data-feather="box" class="text-primary-500 h-6 w-6"></i> | |
| <span class="text-xl font-bold">Python2APK</span> | |
| </div> | |
| <p class="text-gray-400">The easiest way to convert Python scripts to Android APK files.</p> | |
| </div> | |
| <div> | |
| <h4 class="text-lg font-semibold mb-4">Product</h4> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition-colors">Features</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition-colors">Pricing</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition-colors">Documentation</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition-colors">Releases</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 transition-colors">About</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition-colors">Blog</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition-colors">Careers</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition-colors">Contact</a></li> | |
| </ul> | |
| </div> | |
| <div> | |
| <h4 class="text-lg font-semibold mb-4">Connect</h4> | |
| <div class="flex space-x-4"> | |
| <a href="#" class="text-gray-400 hover:text-white transition-colors"> | |
| <i data-feather="twitter" class="h-5 w-5"></i> | |
| </a> | |
| <a href="#" class="text-gray-400 hover:text-white transition-colors"> | |
| <i data-feather="github" class="h-5 w-5"></i> | |
| </a> | |
| <a href="#" class="text-gray-400 hover:text-white transition-colors"> | |
| <i data-feather="linkedin" class="h-5 w-5"></i> | |
| </a> | |
| <a href="#" class="text-gray-400 hover:text-white transition-colors"> | |
| <i data-feather="youtube" class="h-5 w-5"></i> | |
| </a> | |
| </div> | |
| <div class="mt-6"> | |
| <p class="text-gray-400">Subscribe to our newsletter</p> | |
| <div class="flex mt-2"> | |
| <input type="email" placeholder="Your email" class="px-4 py-2 rounded-l-md w-full text-gray-900"> | |
| <button class="bg-primary-500 text-white px-4 py-2 rounded-r-md hover:bg-primary-600 transition-colors"> | |
| <i data-feather="send" class="h-4 w-4"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center"> | |
| <p class="text-gray-400 text-sm">© 2023 Python2APK Alchemist. All rights reserved.</p> | |
| <div class="flex space-x-6 mt-4 md:mt-0"> | |
| <a href="#" class="text-gray-400 hover:text-white text-sm transition-colors">Privacy Policy</a> | |
| <a href="#" class="text-gray-400 hover:text-white text-sm transition-colors">Terms of Service</a> | |
| <a href="#" class="text-gray-400 hover:text-white text-sm transition-colors">Cookies</a> | |
| </div> | |
| </div> | |
| </div> | |
| </footer> | |
| <script> | |
| // Handle form submission | |
| document.getElementById('uploadForm').addEventListener('submit', async function(e) { | |
| e.preventDefault(); | |
| const formData = new FormData(); | |
| formData.append('pythonFile', document.getElementById('pythonFile').files[0]); | |
| formData.append('appName', document.getElementById('appName').value); | |
| const resultContainer = document.getElementById('resultContainer'); | |
| const conversionStatus = document.getElementById('conversionStatus'); | |
| const downloadBtn = document.getElementById('downloadBtn'); | |
| resultContainer.classList.remove('hidden'); | |
| downloadBtn.classList.add('hidden'); | |
| try { | |
| // Simulate API call (replace with actual API endpoint) | |
| const response = await fetch('https://api.example.com/convert', { | |
| method: 'POST', | |
| body: formData | |
| }); | |
| if (response.ok) { | |
| const data = await response.json(); | |
| conversionStatus.innerHTML = ` | |
| <i data-feather="check-circle" class="mr-2 text-green-500"></i> | |
| <span>Conversion successful!</span> | |
| `; | |
| const downloadLink = document.querySelector('#downloadBtn a'); | |
| downloadLink.href = data.downloadUrl; | |
| downloadBtn.classList.remove('hidden'); | |
| // Update feather icons | |
| feather.replace(); | |
| } else { | |
| throw new Error('Conversion failed'); | |
| } | |
| } catch (error) { | |
| conversionStatus.innerHTML = ` | |
| <i data-feather="x-circle" class="mr-2 text-red-500"></i> | |
| <span>Error: ${error.message}</span> | |
| `; | |
| feather.replace(); | |
| } | |
| }); | |
| // Initialize Vanta.js background | |
| VANTA.WAVES({ | |
| el: "#vanta-bg", | |
| mouseControls: true, | |
| touchControls: true, | |
| gyroControls: false, | |
| minHeight: 200.00, | |
| minWidth: 200.00, | |
| scale: 1.00, | |
| scaleMobile: 1.00, | |
| color: 0x10b981, | |
| shininess: 40.00, | |
| waveHeight: 10.00, | |
| waveSpeed: 0.50, | |
| zoom: 0.65 | |
| }); | |
| // Initialize Feather Icons | |
| feather.replace(); | |
| </script> | |
| </body> | |
| </html> | |