fastapi-templates
8
总安装量
8
周安装量
#34623
全站排名
安装命令
npx skills add https://github.com/first-fluke/fullstack-starter --skill fastapi-templates
Agent 安装分布
claude-code
7
gemini-cli
5
antigravity
5
windsurf
5
codex
5
cursor
5
Skill 文档
FastAPI Templates
This skill provides production-ready templates and scaffolding patterns for FastAPI applications.
When to Use
- Starting a new FastAPI service or project.
- Adding standard components (Auth, DB, Logging) to an existing app.
- Standardizing project structure across the team.
Project Structure Template
Recommended structure for scalable FastAPI apps:
src/
âââ api/
â âââ v1/
â â âââ endpoints/ # Route handlers
â â âââ api.py # Router aggregation
â âââ deps.py # Dependencies (get_current_user, etc.)
âââ core/
â âââ config.py # Pydantic BaseSettings
â âââ security.py # JWT & Password hashing
âââ db/
â âââ models/ # SQLAlchemy models
â âââ session.py # DB engine and session factory
â âââ base.py # Import all models here
âââ schemas/ # Pydantic models (Request/Response)
âââ services/ # Business logic
âââ main.py # App entrypoint
Code Templates
1. Standard API Endpoint
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from src.api import deps
from src.schemas.item import ItemCreate, Item
from src.services import item_service
router = APIRouter()
@router.post("/", response_model=Item)
async def create_item(
item_in: ItemCreate,
db: AsyncSession = Depends(deps.get_db),
current_user = Depends(deps.get_current_user),
) -> Item:
"""
Create a new item.
"""
return await item_service.create(db, obj_in=item_in, owner_id=current_user.id)
2. Pydantic Settings
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
PROJECT_NAME: str = "FastAPI App"
DATABASE_URL: str
SECRET_KEY: str
class Config:
case_sensitive = True
env_file = ".env"
settings = Settings()
3. SQLAlchemy Async Model
from sqlalchemy import Column, Integer, String
from src.db.base_class import Base
class Item(Base):
id = Column(Integer, primary_key=True, index=True)
title = Column(String, index=True)
description = Column(String, nullable=True)