test_task_crm/README.md

41 lines
1.4 KiB
Markdown

# 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:
```bash
uv sync
```
3. Run the development server:
```bash
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)
2. When Redis becomes unavailable, middleware logs the degradation and responses transparently fall back to database queries until connectivity is restored.