test_task_crm/README.md

1.4 KiB

Test Task CRM

FastAPI backend template that follows the architecture described in the system prompt: async SQLAlchemy ORM, Alembic-ready models, service/repository layers, JWT auth helpers, and Pydantic v2 schemas.

Quick start

  1. Create a .env file based on variables in app/core/config.py.
  2. Install dependencies:
    uv sync
    
  3. Run the development server:
    uv run python main.py
    

Project layout

app/
  api/            # FastAPI routers and dependencies
  core/           # Settings, database, security helpers
  models/         # SQLAlchemy models and Pydantic schemas
  repositories/   # Data access layer (SQLAlchemy ORM usage)
  services/       # Business logic (auth, users, etc.)

Add new routers under app/api/v1, repositories under app/repositories, and keep business rules inside app/services.

Redis analytics cache

Analytics endpoints can use a Redis cache (TTL 120 seconds). The cache is disabled by default, so the service falls back to the database.

  1. Start Redis and set the following variables:
  • REDIS_ENABLED=true
  • REDIS_URL=redis://localhost:6379/0
  • ANALYTICS_CACHE_TTL_SECONDS (optional, defaults to 120)
  • ANALYTICS_CACHE_BACKOFF_MS (max delay for write/delete retries, defaults to 200)
  1. When Redis becomes unavailable, middleware logs the degradation and responses transparently fall back to database queries until connectivity is restored.