Skip to content
Back to skills

Fastapi Web Framework

ASecurity

Create FastAPI web server with standard middleware, JWT authentication, and REST API endpoints

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
developmentpythongobashfastapitestingapifrontendbackend

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumUses curl or wget to download content

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill fastapi-web-framework --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fastapi Web Framework?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fastapi Web Framework
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-fastapi-web-framework/badge)](https://www.skillsdirectory.com/skills/aibot88-fastapi-web-framework)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fastapi-web-framework
description: Create FastAPI web server with standard middleware, JWT authentication, and REST API endpoints
license: MIT
compatibility: opencode,claude
metadata:
  created_at: "2026-01-29T23:01:15.231Z"
  updated_at: "2026-01-29T23:01:15.231Z"
  version: "1"
---
<!-- BEGIN:compound:skill-managed -->
# Purpose
Create a FastAPI web server with standard production-ready middleware and authentication.

# When To Use
- Building FastAPI web backend
- Creating API server for web frontend
- Ticket requires web framework implementation

# Procedure

## Dependencies
Add to pyproject.toml:
```toml
fastapi>=0.128.0
uvicorn[standard]>=0.40.0
python-jose[cryptography]>=3.5.0
passlib[bcrypt]>=1.7.4
python-multipart>=0.0.22
email-validator>=2.0.0
```

## Project Structure
```bash
src/vibe_piper/web/
├── __init__.py              # Main FastAPI app
├── api/
│   ├── router.py             # API router
│   └── endpoints/
│       ├── auth.py          # Authentication endpoints
│       ├── health.py        # Health check endpoints
│       └── pipelines.py     # Feature endpoints
└── middleware/
    ├── error_handler.py   # Structured error handling
    ├── rate_limit.py     # Rate limiting
    └── request_id.py     # Request ID for tracing
```

## App Creation
`src/vibe_piper/web/__init__.py`:
```python
from contextlib import asynccontextmanager

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.middleware.gzip import GZipMiddleware

from vibe_piper.web.api.router import api_router
from vibe_piper.web.middleware.error_handler import add_error_handlers
from vibe_piper.web.middleware.rate_limit import RateLimitMiddleware
from vibe_piper.web.middleware.request_id import RequestIDMiddleware

@asynccontextmanager
async def lifespan(app: FastAPI):
    yield

def create_app() -> FastAPI:
    app = FastAPI(
        title="API Name",
        version="0.1.0",
        docs_url="/docs",
        lifespan=lifespan,
    )

    app.add_middleware(CORSMiddleware, allow_origins=["http://localhost:5173"])
    app.add_middleware(GZipMiddleware, minimum_size=1000)
    app.add_middleware(RequestIDMiddleware)
    app.add_middleware(RateLimitMiddleware)
    add_error_handlers(app)
    app.include_router(api_router, prefix="/api/v1")

    return app

app = create_app()
```

## Authentication
Use JWT with python-jose:
- SECRET_KEY from env (production)
- ACCESS_TOKEN_EXPIRE_MINUTES = 30
- REFRESH_TOKEN_EXPIRE_DAYS = 7
- bcrypt for password hashing
- OAuth2PasswordBearer for token scheme

## Error Handling
Create structured error responses:
```python
class ErrorResponse(BaseModel):
    error: str
    message: str
    detail: dict | None
    request_id: str | None
```

## Rate Limiting
Token bucket algorithm:
- 60 requests per minute
- 1000 requests per hour
- Client by IP or X-Forwarded-For

## Testing
```bash
uv run vibepiper-server --reload
curl http://127.0.0.1:8000/api/v1/health
```

## Acceptance Criteria
- [ ] FastAPI server runs on port 8000
- [ ] CORS configured for frontend
- [ ] JWT authentication implemented
- [ ] Rate limiting configured
- [ ] Structured error responses
- [ ] OpenAPI/Swagger UI at /docs
<!-- END:compound:skill-managed -->

## Manual notes

_This section is preserved when the skill is updated. Put human notes, caveats, and exceptions here._

Files in this skill

  • SKILL.md3.3 KB
  • source.json633 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.