Files
petfeed/.claude/rules/ecc/python/fastapi.md
T
adminandClaude Sonnet 5 f14be58c06 feat: engagement-counter denormalization, pagination fixes, dead-code cleanup
Bundles the 2026-07-12 code-audit session (Clusters A/B/C/D partial/E/F):
denormalized Post/Advertisement reaction/comment/repost counters synced
transactionally instead of live _count queries; real cursor-based pagination
for followers/following/blocks lists; assertPetOwnership + formatRelativeTime
centralized; dead r2.ts + AWS SDK deps removed; missing DB indexes added;
account-deletion flow, mention notifications, pull-to-refresh feed, and
mobile UI/i18n fixes from the surrounding sessions.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 19:22:23 +02:00

1.7 KiB

paths
paths
**/app/**/*.py
**/fastapi/**/*.py
**/*_api.py

FastAPI Rules

Use these rules for FastAPI projects alongside the general Python rules.

Structure

  • Put app construction in create_app().
  • Keep routers thin; move persistence and business behavior into services or CRUD helpers.
  • Keep request schemas, update schemas, and response schemas separate.
  • Keep database sessions and auth in dependencies.

Async

  • Use async def for endpoints that perform I/O.
  • Use async database and HTTP clients from async endpoints.
  • Do not call requests, sync SQLAlchemy sessions, or blocking file/network operations from async routes.

Dependency Injection

@router.get("/users/{user_id}")
async def get_user(
    user_id: str,
    db: AsyncSession = Depends(get_db),
    current_user: User = Depends(get_current_user),
):
    ...

Do not create SessionLocal() or long-lived clients inside route handlers.

Schemas

  • Never include passwords, password hashes, access tokens, refresh tokens, or internal auth state in response models.
  • Use response_model on endpoints that return application data.
  • Use field constraints instead of hand-written validation when Pydantic can express the rule.

Security

  • Keep CORS origins environment-specific.
  • Do not combine wildcard origins with credentialed CORS.
  • Validate JWT expiry, issuer, audience, and algorithm.
  • Rate-limit auth and write-heavy endpoints.
  • Redact credentials, cookies, authorization headers, and tokens from logs.

Testing

  • Override the exact dependency used by Depends.
  • Clear app.dependency_overrides after tests.
  • Prefer async test clients for async applications.

See skill: fastapi-patterns.