Spaces:
Build error
Build error
| """ | |
| Hugging Face Space Entrypoint. | |
| Serves the API and the Static Frontend. | |
| """ | |
| import os | |
| from fastapi.staticfiles import StaticFiles | |
| from fastapi.responses import FileResponse | |
| from app.main import app | |
| # Ensure we use SQLite for Spaces if not set | |
| if "DATABASE_URL" not in os.environ: | |
| os.environ["DATABASE_URL"] = "sqlite+aiosqlite:///./storage/audioforge.db" | |
| # Mount Static Frontend | |
| # We assume the frontend is built to /app/static | |
| if os.path.exists("/app/static"): | |
| app.mount("/_next", StaticFiles(directory="/app/static/_next"), name="static_next") | |
| app.mount("/assets", StaticFiles(directory="/app/static/assets"), name="static_assets") | |
| # Serve icon | |
| async def icon(): | |
| return FileResponse("/app/static/icon") | |
| # SPA Catch-all (for routes not matching API or static files) | |
| async def serve_spa(full_path: str): | |
| if full_path.startswith("api"): | |
| from fastapi import HTTPException | |
| raise HTTPException(status_code=404, detail="Not Found") | |
| # Check if file exists in static (e.g. favicon.ico) | |
| possible_path = f"/app/static/{full_path}" | |
| if os.path.isfile(possible_path): | |
| return FileResponse(possible_path) | |
| return FileResponse("/app/static/index.html") | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=7860) | |