FastAPI Router
Create FastAPI routers following established patterns with proper authentication, response models, and HTTP status codes.
Quick Start
Copy the template from assets/template.py and replace placeholders:
-
{{ResourceName}} → PascalCase name (e.g., Project )
-
{{resource_name}} → snake_case name (e.g., project )
-
{{resource_plural}} → plural form (e.g., projects )
Authentication Patterns
Optional auth - returns None if not authenticated
current_user: Optional[User] = Depends(get_current_user)
Required auth - raises 401 if not authenticated
current_user: User = Depends(get_current_user_required)
Response Models
@router.get("/items/{item_id}", response_model=Item) async def get_item(item_id: str) -> Item: ...
@router.get("/items", response_model=list[Item]) async def list_items() -> list[Item]: ...
HTTP Status Codes
@router.post("/items", status_code=status.HTTP_201_CREATED) @router.delete("/items/{id}", status_code=status.HTTP_204_NO_CONTENT)
Integration Steps
-
Create router in src/backend/app/routers/
-
Mount in src/backend/app/main.py
-
Create corresponding Pydantic models
-
Create service layer if needed
-
Add frontend API functions