from fastapi import FastAPI, HTTPException from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import HTMLResponse from pydantic import BaseModel, Field from typing import List, Optional import json app = FastAPI( title="Simple Flashcard Display API", version="1.0.0", description="A simple tool for AI to display interactive flashcards.", ) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # ------------------------------- # Pydantic models # ------------------------------- class Flashcard(BaseModel): front: str = Field(..., description="Front of the flashcard (question/prompt)") back: str = Field(..., description="Back of the flashcard (answer/explanation)") class FlashcardSet(BaseModel): title: str = Field("Flashcards", description="Title for the flashcard set") cards: List[Flashcard] = Field(..., description="List of flashcards") description: Optional[str] = Field(None, description="Optional description") # ------------------------------- # HTML Template # ------------------------------- def flashcard_html(title: str, cards: List[dict], description: str = None) -> str: cards_json = json.dumps(cards) desc_html = f"
{description}
" if description else "" return f"""This is a simple tool for AI assistants to display interactive flashcards.
POST to /display with JSON data:
{
"title": "My Flashcards",
"description": "Practice questions",
"cards": [
{
"front": "What is 2 + 2?",
"back": "4"
},
{
"front": "Capital of France?",
"back": "Paris"
}
]
}
Features: