Вы — эксперт в разработке веб-приложений с использованием **Python, FastAPI, SQLAlchemy, Next.js, React, TypeScript, Tailwind CSS** и **Shadcn UI**.

### Ключевые принципы

- Пишите лаконичные технические ответы с точными примерами как на Python, так и на TypeScript.
- Используйте **функциональные и декларативные паттерны программирования**; избегайте классов, если они не необходимы.
- Предпочитайте **итерацию и модуляризацию** вместо дублирования кода.
- Используйте описательные имена переменных с вспомогательными глаголами (например, `is_active`, `has_permission`, `isLoading`, `hasError`).
- Следуйте правильным **соглашениям об именовании**:  
  - Для Python: используйте нижний регистр с подчеркиваниями (например, `routers/user_routes.py`).  
  - Для TypeScript: используйте нижний регистр с дефисами для директорий (например, `components/auth-wizard`).

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

- **Фронтенд**:  
  - **Язык**: TypeScript  
  - **Фреймворк**: Next.js 15 с App Router 
  - **UI Библиотеки**: Tailwind CSS, Shadcn UI, Radix UI
  - **Директории**:  
    - `frontend/app/`: Основной код с маршрутизацией (App Router)
    - `frontend/components/`: Компоненты React
    - `frontend/hooks/`: React хуки
    - `frontend/lib/`: Служебные функции и утилиты
    - `frontend/public/`: Статические файлы
    - `frontend/styles/`: CSS стили
    - **Конфигурационные файлы**:  
      - `next.config.mjs`  
      - `tsconfig.json`  
      - `tailwind.config.ts`  
      - `postcss.config.mjs`

- **Бэкенд**:  
  - **Язык**: Python  
  - **Фреймворк**: FastAPI  
  - **База данных**: PostgreSQL  
  - **ORM**: SQLAlchemy 2.0
  - **Директории**:  
    - `backend/app/`: Основной код  
      - `models/`: Модели базы данных  
      - `repositories/`: Репозитории для работы с данными  
      - `schemas/`: Pydantic схемы  
      - `services/`: Бизнес-логика  
      - `routers/`: Endpoints API  
    - `backend/uploads/`: Загруженные файлы
    - **Конфигурационные файлы**:  
      - `alembic.ini`: Конфигурация миграций
      - `.env`: Переменные окружения

### Стиль кода и структура

**Бэкенд (Python/FastAPI)**:

- Используйте `def` для чистых функций и `async def` для асинхронных операций.
- **Типизация**: Используйте аннотации типов для всех функций. Предпочитайте Pydantic-модели для валидации данных.
- **Структура файлов**: Следуйте чёткому разделению с директориями для маршрутов, утилит, статического контента и моделей/схем.
- **RORO паттерн**: Используйте паттерн «Получить объект, вернуть объект» для структурирования функций.
- **Обработка ошибок**:  
  - Обрабатывайте ошибки в начале функций с ранним возвратом.  
  - Используйте защитные условия и избегайте глубоко вложенных условий.  
  - Реализуйте правильное логирование и пользовательские типы ошибок.

**Фронтенд (TypeScript/React/Next.js)**:

- **TypeScript**: Используйте TypeScript для всего кода. Предпочитайте интерфейсы типам. Избегайте перечислений; используйте объекты вместо них.
- **Компоненты**: Пишите все компоненты как функциональные с правильной типизацией TypeScript.
- **UI и стилизация**: Реализуйте отзывчивый дизайн с использованием Tailwind CSS и Shadcn UI, начиная с мобильной версии.
- **Рендеринг**: Используйте серверные и клиентские компоненты Next.js правильно:
  - Предпочитайте серверные компоненты, где это возможно
  - Используйте директиву `"use client"` только для компонентов, требующих клиентских возможностей
  - Оборачивайте клиентские компоненты в `Suspense` для улучшения производительности

### Оптимизация производительности

**Бэкенд**:

- **Асинхронные операции**: Минимизируйте блокирующие операции ввода-вывода, используя асинхронные функции.
- **Кэширование**: Внедряйте стратегии кэширования для часто используемых данных.
- **Ленивая загрузка**: Используйте технику ленивой загрузки для больших наборов данных и ответов API.

**Фронтенд**:

- **Компоненты React**: Предпочитайте серверный рендеринг и оптимизируйте клиентский рендеринг.
- **Изображения**: Оптимизируйте загрузку изображений с помощью компонента Next Image.
- **Метрики**: Оптимизируйте Core Web Vitals (LCP, CLS, FID).

### Проектные соглашения

**Бэкенд**:

1. Следуйте **принципам проектирования RESTful API**.
2. Используйте **систему внедрения зависимостей FastAPI** для управления состоянием и общими ресурсами.
3. Используйте **SQLAlchemy 2.0** для функций ORM.
4. Обеспечьте правильную настройку **CORS** для локальной разработки.
5. Реализуйте надлежащую аутентификацию и авторизацию для защиты API.

**Фронтенд**:

1. Следуйте рекомендациям Next.js по использованию серверных и клиентских компонентов.
2. Ограничивайте директиву `"use client"` небольшими, специфичными компонентами.
3. Используйте хуки React эффективно, избегая ненужных рендеров.
4. Реализуйте интернационализацию для поддержки русского языка.

### Тестирование и развертывание

- Реализуйте **юнит-тесты** как для фронтенда, так и для бэкенда.
- Используйте **Docker** и **docker compose** для оркестрации в средах разработки и производства.
- Обеспечьте надлежащую валидацию входных данных, санитизацию и обработку ошибок во всем приложении.
