# ============================================================================= # app.py (main entry point) # ============================================================================= import logging import os # Ensure logs folder exists os.makedirs("logs", exist_ok=True) # Configure logging logging.basicConfig( level=logging.DEBUG, # or INFO if you want less noise format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", handlers=[ logging.FileHandler("logs/app.log", mode="a"), # Log to file logging.StreamHandler() # Still show in Spaces Logs tab ] ) logger = logging.getLogger(__name__) # Example usage logger.info("App started") logger.debug("This is debug info") import gradio as gr from data_handler import DataHandler from gradio_callbacks import GradioCallbacks from gradio_components import ( create_header, create_qa_tab, create_overview_tab, create_methodology_tab, create_pivot_tab, create_filters_tab, create_about_tab ) def main(): # Initialize data data_handler = DataHandler() callbacks = GradioCallbacks(data_handler) data = data_handler.get_data() # Create Gradio app with gr.Blocks( theme=gr.themes.Monochrome(), title="FCAS Research Methods Evidence Mapping", css=""" .gradio-container { max-width: 1200px !important; } .main-header { text-align: center; background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); color: white; padding: 2rem; border-radius: 10px; margin-bottom: 2rem; } """ ) as app: # Header create_header() with gr.Tabs(): create_qa_tab(callbacks) create_overview_tab(callbacks) create_methodology_tab(callbacks) create_pivot_tab(callbacks) create_filters_tab(callbacks, data['countries_list'], data['sectors_list']) create_about_tab() return app if __name__ == "__main__": app = main() app.launch( share=True, server_name="0.0.0.0", server_port=7860, show_error=True )