#!/usr/bin/env python3 """ DigiPal - HuggingFace Spaces Entry Point Simplified launcher for HuggingFace Spaces deployment. """ import sys import os import logging from pathlib import Path # Add the project root to Python path project_root = Path(__file__).parent sys.path.insert(0, str(project_root)) from digipal.core.digipal_core import DigiPalCore from digipal.storage.storage_manager import StorageManager from digipal.ai.communication import AICommunication from digipal.auth.auth_manager import AuthManager from digipal.storage.database import DatabaseConnection from digipal.ui.gradio_interface import GradioInterface from config import get_config # Configure logging for HF Spaces logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) def main(): """Main function for HuggingFace Spaces deployment.""" logger.info("🥚 Starting DigiPal on HuggingFace Spaces...") try: # Get configuration config = get_config() # Override for HF Spaces config.gradio.server_name = "0.0.0.0" config.gradio.server_port = 7860 config.gradio.share = False config.env = "production" # Initialize storage manager db_path = "assets/digipal.db" os.makedirs(os.path.dirname(db_path), exist_ok=True) storage_manager = StorageManager(db_path) logger.info(f"💾 Storage initialized: {db_path}") # Initialize AI communication ai_communication = AICommunication() logger.info("🤖 AI system initialized") # Initialize DigiPal core digipal_core = DigiPalCore(storage_manager, ai_communication) logger.info("🎮 DigiPal core ready") # Initialize auth manager db_connection = DatabaseConnection(db_path) auth_manager = AuthManager(db_connection) logger.info("🔐 Authentication ready") # Initialize Gradio interface gradio_interface = GradioInterface(digipal_core, auth_manager) logger.info("🌐 Interface ready") logger.info("✅ DigiPal ready on HuggingFace Spaces!") # Launch the interface gradio_interface.launch_interface( share=False, server_name="0.0.0.0", server_port=7860, debug=False ) except Exception as e: logger.error(f"❌ Failed to start DigiPal: {e}") raise e if __name__ == "__main__": main()