Станислав f94ca47fed Merge pull request #25 from lorsanstand/dev
feat: guest user
2026-05-13 22:32:23 +03:00
2026-01-25 12:29:57 +03:00
2026-05-09 10:18:09 +03:00
2026-01-25 11:30:30 +03:00
2026-05-13 22:31:47 +03:00
2026-05-13 22:31:47 +03:00
2026-01-25 11:30:30 +03:00
2026-01-25 11:30:30 +03:00
2026-05-09 10:18:09 +03:00
2026-05-13 21:43:52 +03:00
2026-05-13 21:43:52 +03:00
2026-01-09 20:34:00 +03:00
2026-02-24 21:25:40 +03:00
2026-01-25 11:42:40 +03:00

🌌 Aether

Aether logo

Современная full-stack платформа для чатов с мощным backend и элегантным frontend

Python FastAPI React TypeScript TailwindCSS 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. Клонируйте репозиторий

git clone https://github.com/yourusername/Aether.git
cd Aether

2. Backend

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

cd frontend

# Установите зависимости
npm install

# Создайте .env.prod файл
echo "VITE_API_URL=http://localhost:8000" > .env.prod

# Запустите dev сервер
npm run dev

🐳 Docker (рекомендуется)

# В корне проекта
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

# Запуск тестов
pytest

# Запуск тестов с coverage
pytest --cov=app tests/

# Создание новой миграции
alembic revision --autogenerate -m "description"

# Применение миграций
alembic upgrade head

# Откат миграций
alembic downgrade -1

# Форматирование кода
black app/
isort app/

# Проверка типов
mypy app/

Frontend

# Запуск dev сервера
npm run dev

# Сборка для production
npm run build

# Просмотр production сборки
npm run preview

# Линтинг
npm run lint

# Проверка типов
npx tsc --noEmit

🧪 Тестирование

Backend тесты

cd backend
pytest tests/ -v

🚢 Деплой

Backend

# Сборка Docker образа
docker build -t aether-backend .

# Запуск контейнера
docker run -p 8000:8000 --env-file .env.prod aether-backend

Frontend

# Сборка для production
npm run build

# Папка dist/ готова к деплою на любой статический хостинг

📝 Лицензия

Этот проект распространяется под лицензией Apache 2.0. Подробности в файле LICENSE.

👤 Автор

lorsan

🙏 Благодарности

  • FastAPI за отличный фреймворк
  • React команде за мощную библиотеку

Сделано с ❤️ by lorsan
S
Description
No description provided
Readme Apache-2.0 809 KiB
Languages
TypeScript 53.2%
Python 34.8%
CSS 5.8%
HTML 4.7%
JavaScript 0.8%
Other 0.7%