mirror of
https://github.com/lorsanstand/Aether.git
synced 2026-06-19 12:05:16 +03:00
Edit README
This commit is contained in:
@@ -1,2 +1,324 @@
|
||||
# Aether
|
||||
Проектная работа
|
||||
<div align="center">
|
||||
|
||||
# 🌌 Aether
|
||||
|
||||
<img src="assets/logo.png" alt="Aether logo" width="150" style="border-radius: 15px;">
|
||||
|
||||
**Современная full-stack платформа для чатов с мощным backend и элегантным frontend**
|
||||
|
||||
[](https://www.python.org/downloads/)
|
||||
[](https://fastapi.tiangolo.com/)
|
||||
[](https://react.dev/)
|
||||
[](https://www.typescriptlang.org/)
|
||||
[](https://tailwindcss.com/)
|
||||
[](LICENSE)
|
||||
|
||||
[Особенности](#-особенности) • [Технологии](#️-технологии) • [Установка](#-быстрый-старт) • [Документация](#-документация) • [Разработка](#-разработка)
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## ✨ Особенности
|
||||
|
||||
- 🚀 **Высокая производительность**: Асинхронный 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 файл
|
||||
cat > .env << 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 файл
|
||||
echo "VITE_API_URL=http://localhost:8000" > .env
|
||||
|
||||
# Запустите 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 aether-backend
|
||||
```
|
||||
|
||||
### Frontend
|
||||
|
||||
```bash
|
||||
# Сборка для production
|
||||
npm run build
|
||||
|
||||
# Папка dist/ готова к деплою на любой статический хостинг
|
||||
```
|
||||
|
||||
## 🤝 Вклад в проект
|
||||
|
||||
Мы приветствуем вклад в развитие проекта! Пожалуйста:
|
||||
|
||||
1. Сделайте Fork репозитория
|
||||
2. Создайте ветку для новой функции (`git checkout -b feature/AmazingFeature`)
|
||||
3. Зафиксируйте изменения (`git commit -m 'Add some AmazingFeature'`)
|
||||
4. Отправьте в ветку (`git push origin feature/AmazingFeature`)
|
||||
5. Откройте Pull Request
|
||||
|
||||
## 📝 Лицензия
|
||||
|
||||
Этот проект распространяется под лицензией 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/) команде за мощную библиотеку
|
||||
- Всем контрибьюторам open-source проектов, которые используются в Aether
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
Сделано с ❤️ by lorsan
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user