PluginBench
Rule

fastapi

via PatrickJS/awesome-cursorrules

FastAPI best practices for building secure, performant Python web APIs

What is fastapi?

Comprehensive guide for structuring FastAPI projects with proper patterns for routing, models, authentication, and deployment. Use this rule when building production-grade REST APIs to ensure consistent application of FastAPI conventions across project organization, security, and testing.

  • Establish project structure with organized routes, modules, and dependency injection
  • Define API design patterns including HTTP methods, status codes, Pydantic models, and OpenAPI documentation
  • Configure authentication with JWT, OAuth2, password hashing, and role-based access control
  • Implement security practices including CORS, rate limiting, input validation, and security headers
  • Optimize performance through async operations, caching, background tasks, and query optimization
  • Structure testing with unit tests, integration tests, fixtures, and proper coverage

Applies to

File patterns this rule matches.

**/*.py
app/**/*.py
api/**/*.py
Rule definition (reference)

Source of truth, from the repository.

FastAPI Best Practices

Project Structure

  • Use proper directory structure
  • Implement proper module organization
  • Use proper dependency injection
  • Keep routes organized by domain
  • Implement proper middleware
  • Use proper configuration management

API Design

  • Use proper HTTP methods
  • Implement proper status codes
  • Use proper request/response models
  • Implement proper validation
  • Use proper error handling
  • Document APIs with OpenAPI

Models

  • Use Pydantic models
  • Implement proper validation
  • Use proper type hints
  • Keep models organized
  • Use proper inheritance
  • Implement proper serialization

Database

  • Use proper ORM (SQLAlchemy)
  • Implement proper migrations
  • Use proper connection pooling
  • Implement proper transactions
  • Use proper query optimization
  • Handle database errors properly

Authentication

  • Implement proper JWT authentication
  • Use proper password hashing
  • Implement proper role-based access
  • Use proper session management
  • Implement proper OAuth2
  • Handle authentication errors properly

Security

  • Implement proper CORS
  • Use proper rate limiting
  • Implement proper input validation
  • Use proper security headers
  • Handle security errors properly
  • Implement proper logging

Performance

  • Use proper caching
  • Implement proper async operations
  • Use proper background tasks
  • Implement proper connection pooling
  • Use proper query optimization
  • Monitor performance metrics

Testing

  • Write proper unit tests
  • Implement proper integration tests
  • Use proper test fixtures
  • Implement proper mocking
  • Test error scenarios
  • Use proper test coverage

Deployment

  • Use proper Docker configuration
  • Implement proper CI/CD
  • Use proper environment variables
  • Implement proper logging
  • Use proper monitoring
  • Handle deployment errors properly

Documentation

  • Use proper docstrings
  • Implement proper API documentation
  • Use proper type hints
  • Keep documentation updated
  • Document error scenarios
  • Use proper versioning

Related rules

Senior full-stack TypeScript, React, Node.js guidance with clean architecture, testing, and WHY-oriented reasoning.

**/*
41k
via PatrickJS/awesome-cursorrules

Quantitative factor research skills for designing, evaluating, and mining alpha factors in equities markets.

**/*
41k
via PatrickJS/awesome-cursorrules

Android development with Jetpack Compose, clean architecture, and Material Design 3.

**/*
41k
via PatrickJS/awesome-cursorrules

Angular development with Novo Elements UI library using standalone components.

**/*
41k
via PatrickJS/awesome-cursorrules

Expert Angular 18 + TypeScript development with Jest, emphasizing clean code and performance.

**/*
41k
via PatrickJS/awesome-cursorrules

Manage Kubernetes clusters, add-ons, stacks, and credentials via the Ankra CLI platform.

**/*.sh +5
41k
via PatrickJS/awesome-cursorrules