Smithery Logo
MCPsSkillsDocsPricing
Login
NewFlame, an assistant that learns and improves. Available onTelegramSlack
    wshobson

    fastapi-templates

    wshobson/fastapi-templates
    Coding
    28,185
    1 installs

    About

    SKILL.md

    Install

    • Telegram
      Telegram
    • Slack
      Slack
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    • Download skill
    ├─
    ├─
    └─
    Smithery Logo

    Give agents more agency

    Resources

    DocumentationPrivacy PolicySystem Status

    Company

    PricingAboutBlog

    Connect

    © 2026 Smithery. All rights reserved.

    About

    Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.

    SKILL.md

    FastAPI Project Templates

    Production-ready FastAPI project structures with async patterns, dependency injection, middleware, and best practices for building high-performance APIs.

    When to Use This Skill

    • Starting new FastAPI projects from scratch
    • Implementing async REST APIs with Python
    • Building high-performance web services and microservices
    • Creating async applications with PostgreSQL, MongoDB
    • Setting up API projects with proper structure and testing

    Core Concepts

    1. Project Structure

    Recommended Layout:

    app/
    ├── api/                    # API routes
    │   ├── v1/
    │   │   ├── endpoints/
    │   │   │   ├── users.py
    │   │   │   ├── auth.py
    │   │   │   └── items.py
    │   │   └── router.py
    │   └── dependencies.py     # Shared dependencies
    ├── core/                   # Core configuration
    │   ├── config.py
    │   ├── security.py
    │   └── database.py
    ├── models/                 # Database models
    │   ├── user.py
    │   └── item.py
    ├── schemas/                # Pydantic schemas
    │   ├── user.py
    │   └── item.py
    ├── services/               # Business logic
    │   ├── user_service.py
    │   └── auth_service.py
    ├── repositories/           # Data access
    │   ├── user_repository.py
    │   └── item_repository.py
    └── main.py                 # Application entry
    

    2. Dependency Injection

    FastAPI's built-in DI system using Depends:

    • Database session management
    • Authentication/authorization
    • Shared business logic
    • Configuration injection

    3. Async Patterns

    Proper async/await usage:

    • Async route handlers
    • Async database operations
    • Async background tasks
    • Async middleware

    Detailed worked examples and patterns

    Detailed sections (starting with ## Implementation Patterns) live in references/details.md. Read that file when the navigation summary above is insufficient.

    Testing

    # tests/conftest.py
    import pytest
    import asyncio
    from httpx import AsyncClient
    from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
    from sqlalchemy.orm import sessionmaker
    
    from app.main import app
    from app.core.database import get_db, Base
    
    TEST_DATABASE_URL = "sqlite+aiosqlite:///:memory:"
    
    @pytest.fixture(scope="session")
    def event_loop():
        loop = asyncio.get_event_loop_policy().new_event_loop()
        yield loop
        loop.close()
    
    @pytest.fixture
    async def db_session():
        engine = create_async_engine(TEST_DATABASE_URL, echo=True)
        async with engine.begin() as conn:
            await conn.run_sync(Base.metadata.create_all)
    
        AsyncSessionLocal = sessionmaker(
            engine, class_=AsyncSession, expire_on_commit=False
        )
    
        async with AsyncSessionLocal() as session:
            yield session
    
    @pytest.fixture
    async def client(db_session):
        async def override_get_db():
            yield db_session
    
        app.dependency_overrides[get_db] = override_get_db
    
        async with AsyncClient(app=app, base_url="http://test") as client:
            yield client
    
    # tests/test_users.py
    import pytest
    
    @pytest.mark.asyncio
    async def test_create_user(client):
        response = await client.post(
            "/api/v1/users/",
            json={
                "email": "test@example.com",
                "password": "testpass123",
                "name": "Test User"
            }
        )
        assert response.status_code == 201
        data = response.json()
        assert data["email"] == "test@example.com"
        assert "id" in data
    
    Recommended Servers
    reportflow-mcp
    reportflow-mcp
    MantleKit Launch Planner
    MantleKit Launch Planner
    Laddro Career
    Laddro Career
    Repository
    wshobson/agents
    Files