from dotenv import load_dotenv load_dotenv() from fastapi import FastAPI, Request from fastapi.responses import FileResponse, HTMLResponse from fastapi.staticfiles import StaticFiles from fastapi.middleware.cors import CORSMiddleware from narrate_description import router as narrate_description_router app = FastAPI() # Add CORS middleware to allow WebSocket connections app.add_middleware( CORSMiddleware, allow_origins=["*"], # Allows all origins allow_credentials=True, allow_methods=["*"], # Allows all methods allow_headers=["*"], # Allows all headers ) app.include_router(narrate_description_router) app.mount("/static", StaticFiles(directory="static"), name="static") app.mount("/templates", StaticFiles(directory="templates"), name="templates") @app.get("/", response_class=HTMLResponse) async def get_root(request: Request): return FileResponse('templates/main.html') if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=7860) # Use port 7860 for Hugging Face Spaces compatibility