from fastapi import FastAPI, HTTPException, Request from fastapi.responses import JSONResponse import os, json app = FastAPI() PROJECTS_DIR = "projects" os.makedirs(PROJECTS_DIR, exist_ok=True) @app.get("/load") def load_project(project: str): """ GET /load?project=FILENAME Returns the JSON contents of projects/FILENAME """ path = os.path.join(PROJECTS_DIR, os.path.basename(project)) if not os.path.isfile(path): raise HTTPException(status_code=404, detail="Project not found") with open(path, "r", encoding="utf-8") as f: data = json.load(f) return JSONResponse(content=data) @app.post("/save") async def save_project(project: str, request: Request): """ POST /save?project=FILENAME Body: JSON project data Writes the data back into projects/FILENAME """ body = await request.json() path = os.path.join(PROJECTS_DIR, os.path.basename(project)) with open(path, "w", encoding="utf-8") as f: json.dump(body, f, indent=2) return JSONResponse(content={"success": True}) if __name__ == "__main__": # When you run `python app.py`, this will start Uvicorn on the HF Spaces port. import uvicorn uvicorn.run(app, host="0.0.0.0", port=7860)