Files
qa_test_app/DOC/СТЕК.md
Aleksey Razorvin 15de1e9369 docs: add tech stack document and step 004 log
- Create DOC/СТЕК.md: FastAPI + React + PostgreSQL + Docker
- Add DOC/ШАГИ/ШАГ_2026-03-21_004.md with decisions log

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 11:31:57 +05:00

122 lines
4.6 KiB
Markdown

# Технологический стек
**Дата:** 2026-03-21
**Статус:** Согласовано
---
## Архитектура
```
┌─────────────────────────────────────────────┐
│ Nginx │
│ / → React SPA (статика) │
│ /api/ → FastAPI backend │
└────────────────────┬────────────────────────┘
│ Docker network
┌──────────┴──────────┐
│ │
┌─────▼──────┐ ┌──────▼─────┐
│ FastAPI │ │ React SPA │
│ (backend) │ │ (frontend)│
└─────┬──────┘ └────────────┘
┌─────▼──────┐
│ PostgreSQL │
└────────────┘
```
---
## Backend
| Компонент | Технология | Версия |
|-----------|-----------|--------|
| Язык | Python | 3.12+ |
| Фреймворк | FastAPI | 0.115+ |
| ORM | SQLAlchemy (async) | 2.0+ |
| Миграции | Alembic | latest |
| База данных | PostgreSQL | 16+ |
| Валидация | Pydantic v2 | 2.x |
| Аутентификация | JWT (python-jose) | latest |
| Хэширование паролей | passlib + bcrypt | latest |
| ASGI-сервер | Uvicorn | latest |
### Почему FastAPI
- Автоматическая генерация OpenAPI/Swagger документации — джуниор сразу видит API
- Async из коробки — правильные привычки с первого проекта
- Pydantic-схемы = валидация + сериализация в одном месте
- Активное сообщество, отличная документация на русском
---
## Frontend
| Компонент | Технология | Версия |
|-----------|-----------|--------|
| Фреймворк | React | 18+ |
| Язык | TypeScript | 5.x |
| Сборщик | Vite | 5.x |
| UI-библиотека | Ant Design (antd) | 5.x |
| Роутинг | React Router | v6 |
| Серверный стейт | TanStack Query (React Query) | v5 |
| HTTP-клиент | Axios | latest |
### Почему Ant Design
- Готовые компоненты: таблицы, формы, прогрессбары, таймеры — сэкономит спринты
- Хорошо подходит для административных интерфейсов
- Поддержка русской локализации
### Почему TanStack Query
- Учит джуниора правильной работе с серверным состоянием
- Кэширование, loading/error состояния, инвалидация — всё из коробки
- Убирает необходимость в Redux для большинства задач
---
## Инфраструктура
| Компонент | Технология |
|-----------|-----------|
| Контейнеризация | Docker + Docker Compose |
| Реверс-прокси | Nginx |
| ОС сервера | Linux (Ubuntu/Debian) |
### Структура Docker Compose
```yaml
services:
db: # PostgreSQL
backend: # FastAPI + Uvicorn
frontend: # React (build) / Vite dev server
nginx: # Reverse proxy
```
---
## Инструменты разработки
| Назначение | Инструмент |
|-----------|-----------|
| Линтер Python | Ruff |
| Форматтер Python | Black |
| Линтер/форматтер JS | ESLint + Prettier |
| API-тестирование | Swagger UI (встроен в FastAPI) |
---
## Уведомления (последний спринт)
- Канал: мессенджер **MAX**
- Реализация: отдельный сервис/модуль в backend
- Интеграция: MAX API (изучить документацию перед спринтом)
---
## Вне scope (не используем)
- Redis / очереди задач (Celery) — не нужны для данного масштаба
- GraphQL — REST достаточно
- Kubernetes — Docker Compose достаточно для 50–200 пользователей
- SSR (Next.js) — не нужен, SPA достаточно