import os from fastapi import FastAPI from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from fastapi.middleware.cors import CORSMiddleware from app.config import settings from app.api.v1.audio import router as audio_router from app.api.v1.tasks import router as tasks_router from app.api.v1.multitrack import router as multitrack_router # Ensure storage directories exist os.makedirs(settings.UPLOADS_DIR, exist_ok=True) os.makedirs(settings.PROCESSED_DIR, exist_ok=True) app = FastAPI(title="SonicForge API Engine") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Mount storage directory app.mount("/static/audio", StaticFiles(directory=settings.STORAGE_DIR), name="audio") # Include routers app.include_router(audio_router, prefix="/api/v1/audio", tags=["audio"]) app.include_router(tasks_router, prefix="/api/v1/audio", tags=["tasks"]) app.include_router(multitrack_router, prefix="/api/v1/multitrack", tags=["multitrack"]) @app.get("/", response_class=HTMLResponse) async def get_index(): index_path = os.path.join(settings.TEMPLATES_DIR, "index.html") if not os.path.exists(index_path): return HTMLResponse(content=f"

SonicForge Studio: index.html not found at {index_path}

", status_code=404) with open(index_path, "r", encoding="utf-8") as file: return HTMLResponse(content=file.read(), status_code=200)