from fastapi import FastAPI, Form, Request from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates from markdown2 import markdown from refine_prompt import run_refiner from fastapi.responses import HTMLResponse, JSONResponse import os from fastapi.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], # or frontend's domain allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) templates = Jinja2Templates(directory="templates") @app.get("/", response_class=HTMLResponse) async def show_form(request: Request): return templates.TemplateResponse("form.html", {"request": request}) @app.post("/refine", response_class=HTMLResponse) async def refine(request: Request, idea: str = Form(...)): result = run_refiner(idea) # Format all results into Markdown markdown_output = f""" ## 🧠 Refined Idea {result['refined_idea']} --- ## 📊 Market Info {result['market_info']} --- ## 📽️ Slide Summary {result['slide_summary']} """ html_output = markdown(markdown_output) return templates.TemplateResponse("result.html", { "request": request, "output_html": html_output }) from fastapi.responses import JSONResponse @app.post("/api/refine") async def refine_api(idea: str = Form(...)): result = run_refiner(idea) markdown_output = f""" ## 🧠 Refined Idea {result['refined_idea']} --- ## 📊 Market Info {result['market_info']} --- ## 📽️ Slide Summary {result['slide_summary']} """ html_output = markdown(markdown_output) return JSONResponse(content={"output_html": html_output})