# 🌌 Aether

**Современная full-stack платформа для чатов с мощным backend и элегантным frontend**
[](https://www.python.org/downloads/)
[](https://fastapi.tiangolo.com/)
[](https://react.dev/)
[](https://www.typescriptlang.org/)
[](https://tailwindcss.com/)
[](LICENSE)
[Особенности](#-особенности) • [Технологии](#️-технологии) • [Установка](#-быстрый-старт) • [Документация](#-документация) • [Разработка](#-разработка)
---
## ✨ Особенности
- 🚀 **Высокая производительность**: Асинхронный backend на FastAPI с оптимизированными запросами к БД
- 🔐 **Безопасность**: JWT аутентификация с cookie, защита от CSRF, хеширование паролей bcrypt
- 📧 **Email сервис**: Подтверждение email, восстановление пароля через Celery задачи
- 💾 **Кэширование**: Redis для быстрого доступа к данным и сессий
- 🗄️ **База данных**: PostgreSQL с миграциями через Alembic
- 📦 **Файловое хранилище**: Интеграция с S3-совместимыми хранилищами
- 🎨 **Современный UI**: React 19 с TypeScript, Framer Motion анимации, Tailwind CSS
- 🔄 **Управление состоянием**: Zustand для простого и эффективного state management
- 📱 **Адаптивный дизайн**: Полностью responsive интерфейс для всех устройств
- 🧪 **Тестирование**: Pytest для backend тестов
## 🛠️ Технологии
### Backend
```
FastAPI - Современный веб-фреймворк для API
SQLAlchemy - ORM для работы с PostgreSQL
Alembic - Миграции базы данных
Pydantic - Валидация данных и настроек
Celery - Асинхронные задачи (email рассылки)
Redis - Кэширование и брокер сообщений
Passlib + bcrypt - Безопасное хеширование паролей
Python-Jose - JWT токены
Aiobotocore - Асинхронная работа с S3
Pytest - Тестирование
```
### Frontend
```
React 19 - UI библиотека
TypeScript - Типизированный JavaScript
Vite - Сборщик проекта
React Router - Маршрутизация
Zustand - Управление состоянием
Axios - HTTP клиент
Framer Motion - Анимации
Tailwind CSS - Utility-first CSS фреймворк
Lucide React - Иконки
```
### Инфраструктура
```
Docker - Контейнеризация
PostgreSQL - База данных
Redis - Кэш и брокер сообщений
S3 - Объектное хранилище
```
## 🚀 Быстрый старт
### Требования
- Python 3.13+
- Node.js 18+
- PostgreSQL 14+
- Redis 7+
- Docker & Docker Compose (опционально)
### Установка
#### 1. Клонируйте репозиторий
```bash
git clone https://github.com/yourusername/Aether.git
cd Aether
```
#### 2. Backend
```bash
cd backend
# Установите зависимости (используя pip)
pip install -e .
# Или используя poetry
poetry install
# Создайте .env.prod файл
cat > .env.prod << EOF
DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/aether
REDIS_URL=redis://localhost:6379
SECRET_KEY=your-secret-key-here
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password
S3_ENDPOINT=https://s3.amazonaws.com
S3_ACCESS_KEY=your-access-key
S3_SECRET_KEY=your-secret-key
S3_BUCKET_NAME=aether-bucket
EOF
# Запустите миграции
alembic upgrade head
# Запустите сервер
uvicorn app.main:app --reload
# В отдельном терминале запустите Celery worker
celery -A app.core.celery_app worker --loglevel=info
```
#### 3. Frontend
```bash
cd frontend
# Установите зависимости
npm install
# Создайте .env.prod файл
echo "VITE_API_URL=http://localhost:8000" > .env.prod
# Запустите dev сервер
npm run dev
```
### 🐳 Docker (рекомендуется)
```bash
# В корне проекта
cd backend
docker-compose -f docker-compose.dev.yml up -d
```
## 📖 Документация
### API Endpoints
После запуска backend, документация доступна по адресам:
- Swagger UI: `http://localhost:8000/docs`
- ReDoc: `http://localhost:8000/redoc`
### Основные маршруты
#### Аутентификация
```
POST /auth/register - Регистрация нового пользователя
POST /auth/login - Вход в систему
POST /auth/logout - Выход из системы
POST /auth/verify-email - Подтверждение email
POST /auth/request-reset - Запрос на сброс пароля
POST /auth/reset-password - Сброс пароля
```
#### Пользователи
```
GET /users/me - Получить текущего пользователя
PUT /users/me - Обновить профиль
DELETE /users/me - Удалить аккаунт
```
#### Чаты
```
GET /chats - Получить список чатов
POST /chats - Создать новый чат
GET /chats/{id} - Получить чат по ID
PUT /chats/{id} - Обновить чат
DELETE /chats/{id} - Удалить чат
```
## 🏗️ Структура проекта
```
Aether/
├── backend/
│ ├── app/
│ │ ├── auth/ # Модуль аутентификации
│ │ ├── users/ # Модуль пользователей
│ │ ├── chats/ # Модуль чатов
│ │ ├── core/ # Основные компоненты (DB, Redis, Config)
│ │ ├── services/ # Бизнес-логика (Email, Redis)
│ │ ├── tasks/ # Celery задачи
│ │ ├── utils/ # Утилиты (OAuth2, Hash, Cache)
│ │ ├── templates/ # Email шаблоны
│ │ └── migration/ # Alembic миграции
│ ├── tests/ # Тесты
│ └── pyproject.toml # Зависимости Python
│
├── frontend/
│ ├── src/
│ │ ├── components/ # React компоненты
│ │ │ ├── auth/ # Компоненты аутентификации
│ │ │ ├── chat/ # Компоненты чата
│ │ │ └── common/ # Общие компоненты
│ │ ├── pages/ # Страницы приложения
│ │ ├── services/ # API сервисы
│ │ ├── store/ # Zustand хранилища
│ │ └── utils/ # Утилиты
│ └── package.json # Зависимости Node.js
│
└── assets/ # Статические файлы (логотипы и т.д.)
```
## 💻 Разработка
### Backend
```bash
# Запуск тестов
pytest
# Запуск тестов с coverage
pytest --cov=app tests/
# Создание новой миграции
alembic revision --autogenerate -m "description"
# Применение миграций
alembic upgrade head
# Откат миграций
alembic downgrade -1
# Форматирование кода
black app/
isort app/
# Проверка типов
mypy app/
```
### Frontend
```bash
# Запуск dev сервера
npm run dev
# Сборка для production
npm run build
# Просмотр production сборки
npm run preview
# Линтинг
npm run lint
# Проверка типов
npx tsc --noEmit
```
## 🧪 Тестирование
### Backend тесты
```bash
cd backend
pytest tests/ -v
```
## 🚢 Деплой
### Backend
```bash
# Сборка Docker образа
docker build -t aether-backend .
# Запуск контейнера
docker run -p 8000:8000 --env-file .env.prod aether-backend
```
### Frontend
```bash
# Сборка для production
npm run build
# Папка dist/ готова к деплою на любой статический хостинг
```
## 📝 Лицензия
Этот проект распространяется под лицензией Apache 2.0. Подробности в файле [LICENSE](LICENSE).
## 👤 Автор
**lorsan**
- Email: stasstrochewskij@gmail.com
- GitHub: [@lorsan](https://github.com/lorsan)
## 🙏 Благодарности
- [FastAPI](https://fastapi.tiangolo.com/) за отличный фреймворк
- [React](https://react.dev/) команде за мощную библиотеку
---