Rsr2425's picture
Consolidated FE hosting to FastAPI for now
cda4639
raw
history blame
1.47 kB
from fastapi import FastAPI, HTTPException
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse
from pydantic import BaseModel
from backend.app.problem_generator import ProblemGenerator
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # In production, replace with specific origins
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
class UrlInput(BaseModel):
url: str
class UserQuery(BaseModel):
user_query: str
@app.post("/api/crawl/")
async def crawl_documentation(input_data: UrlInput):
print(f"Received url {input_data.url}")
return {"status": "received"}
@app.post("/api/problems/")
async def generate_problems(query: UserQuery):
problems = ProblemGenerator().generate_problems(query.user_query)
return {"Problems": problems}
# Serve static files
app.mount("/static", StaticFiles(directory="/app/static/static"), name="static")
# Root path handler
@app.get("/")
async def serve_root():
return FileResponse("/app/static/index.html")
# Catch-all route for serving index.html
@app.get("/{full_path:path}")
async def serve_react(full_path: str):
# Skip API routes
if full_path.startswith("api/"):
raise HTTPException(status_code=404, detail="Not found")
# For all other routes, serve the React index.html
return FileResponse("/app/static/index.html")