# Документация бэкенда интернет-магазина одежды

## Содержание

1. [API документация](api_documentation.md) - Подробное описание всех API эндпоинтов
2. [Структура базы данных](database_structure.md) - Описание таблиц и связей в базе данных

## Технологический стек

- **Язык программирования**: Python 3.10+
- **Фреймворк**: FastAPI
- **ORM**: SQLAlchemy 2.0
- **База данных**: PostgreSQL
- **Аутентификация**: JWT (JSON Web Tokens)

## Архитектура приложения

Приложение построено по принципу многослойной архитектуры:

1. **Роутеры (Routers)** - Обрабатывают HTTP-запросы и ответы
2. **Сервисы (Services)** - Содержат бизнес-логику приложения
3. **Репозитории (Repositories)** - Отвечают за взаимодействие с базой данных
4. **Модели (Models)** - Описывают структуру таблиц базы данных
5. **Схемы (Schemas)** - Описывают структуру данных для API (Pydantic модели)

## Структура проекта

```
backend/
├── app/
│   ├── __init__.py
│   ├── main.py           # Точка входа в приложение
│   ├── config.py         # Конфигурация приложения
│   ├── core.py           # Основные функции и зависимости
│   ├── models/           # SQLAlchemy модели
│   │   ├── __init__.py
│   │   ├── user_models.py
│   │   ├── catalog_models.py
│   │   ├── order_models.py
│   │   ├── review_models.py
│   │   └── content_models.py
│   ├── schemas/          # Pydantic схемы
│   │   ├── __init__.py
│   │   ├── user_schemas.py
│   │   ├── catalog_schemas.py
│   │   ├── order_schemas.py
│   │   ├── review_schemas.py
│   │   └── content_schemas.py
│   ├── repositories/     # Репозитории для работы с БД
│   │   ├── __init__.py
│   │   ├── user_repo.py
│   │   ├── catalog_repo.py
│   │   ├── order_repo.py
│   │   ├── review_repo.py
│   │   └── content_repo.py
│   ├── services/         # Бизнес-логика
│   │   ├── __init__.py
│   │   ├── user_service.py
│   │   ├── catalog_service.py
│   │   ├── order_service.py
│   │   ├── review_service.py
│   │   └── content_service.py
│   └── routers/          # API эндпоинты
│       ├── __init__.py
│       ├── auth_router.py
│       ├── user_router.py
│       ├── catalog_router.py
│       ├── cart_router.py
│       ├── order_router.py
│       ├── review_router.py
│       ├── content_router.py
│       └── analytics_router.py
├── alembic/              # Миграции базы данных
├── tests/                # Тесты
└── docs/                 # Документация
    ├── README.md
    ├── api_documentation.md
    └── database_structure.md
```

## Запуск приложения

### Установка зависимостей

```bash
pip install -r requirements.txt
```

### Настройка переменных окружения

Создайте файл `.env` в корне проекта со следующими переменными:

```
DATABASE_URL=postgresql://user:password@localhost:5432/db_name
SECRET_KEY=your_secret_key
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
```

### Запуск сервера разработки

```bash
uvicorn app.main:app --reload
```

### Запуск миграций

```bash
alembic upgrade head
```

## Документация API

После запуска приложения, документация API доступна по адресу:

- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc 