99 lines
4.6 KiB
Markdown
99 lines
4.6 KiB
Markdown
# Документация Discours.io API
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
### Запуск локально
|
||
```bash
|
||
# Стандартный запуск
|
||
python main.py
|
||
|
||
# С HTTPS (требует mkcert)
|
||
python dev.py
|
||
```
|
||
|
||
## 📚 Документация
|
||
|
||
### Авторизация и безопасность
|
||
- [Система авторизации](auth-system.md) - Токены, сессии, OAuth
|
||
- [Архитектура](auth-architecture.md) - Диаграммы и схемы
|
||
- [Миграция](auth-migration.md) - Переход на новую версию
|
||
- [Безопасность](security.md) - Пароли, email, RBAC
|
||
- [OAuth](oauth.md) - Google, GitHub, Facebook, X, Telegram, VK, Yandex
|
||
- [OAuth настройка](oauth-setup.md) - Инструкции по настройке OAuth провайдеров
|
||
|
||
### Функциональность
|
||
- [Система рейтингов](rating.md) - Лайки, дизлайки, featured статьи
|
||
- [Подписки](follower.md) - Follow/unfollow логика
|
||
- [Кэширование](caching.md) - Redis, производительность
|
||
- [Схема данных Redis](redis-schema.md) - Полная документация структур данных
|
||
- [Пагинация комментариев](comments-pagination.md) - Иерархические комментарии
|
||
- [Загрузка контента](load_shouts.md) - Оптимизированные запросы
|
||
|
||
### Администрирование
|
||
- **Админ-панель**: Управление пользователями, ролями, переменными среды
|
||
- **Управление публикациями**: Просмотр, поиск, фильтрация по статусу (опубликованные/черновики/удаленные)
|
||
- **Просмотр данных**: Body, media, авторы, темы с удобной навигацией
|
||
- **DRY принцип**: Переиспользование существующих резолверов из reader.py и editor.py
|
||
|
||
### API и инфраструктура
|
||
- [API методы](api.md) - GraphQL эндпоинты
|
||
- [Функции системы](features.md) - Полный список возможностей
|
||
|
||
## ⚡ Ключевые возможности
|
||
|
||
### Авторизация
|
||
- **Модульная архитектура**: SessionTokenManager, VerificationTokenManager, OAuthTokenManager
|
||
- **OAuth провайдеры**: 7 поддерживаемых провайдеров с PKCE
|
||
- **RBAC**: user/moderator/admin роли
|
||
- **Производительность**: 50% ускорение Redis, 30% меньше памяти
|
||
|
||
### Nginx (упрощенная конфигурация)
|
||
- **KISS принцип**: ~60 строк вместо сложной конфигурации
|
||
- **Dokku дефолты**: Максимальное использование встроенных настроек
|
||
- **SSL/TLS**: TLS 1.2/1.3, HSTS, OCSP stapling
|
||
- **Статические файлы**: Кэширование на 1 год, gzip сжатие
|
||
- **Безопасность**: X-Frame-Options, X-Content-Type-Options
|
||
|
||
### Реакции и комментарии
|
||
- **Иерархические комментарии** с эффективной пагинацией
|
||
- **Физическое/логическое удаление** (рейтинги/комментарии)
|
||
- **Автоматический featured статус** на основе лайков
|
||
- **Distinct() оптимизация** для JOIN запросов
|
||
|
||
### Производительность
|
||
- **Redis pipeline операции** для пакетных запросов
|
||
- **Автоматическая очистка** истекших токенов
|
||
- **Connection pooling** и keepalive
|
||
- **Type-safe codebase** (mypy clean)
|
||
- **Оптимизированная сортировка авторов** с кешированием по параметрам
|
||
|
||
## 🔧 Конфигурация
|
||
|
||
```python
|
||
# JWT
|
||
JWT_SECRET_KEY = "your-secret-key"
|
||
JWT_EXPIRATION_HOURS = 720 # 30 дней
|
||
|
||
# Redis
|
||
REDIS_URL = "redis://localhost:6379/0"
|
||
|
||
# OAuth (необходимые провайдеры)
|
||
OAUTH_CLIENTS_GOOGLE_ID = "..."
|
||
OAUTH_CLIENTS_GITHUB_ID = "..."
|
||
# ... другие провайдеры
|
||
```
|
||
|
||
## 🛠 Использование API
|
||
|
||
```python
|
||
# Сессии
|
||
from auth.tokens.sessions import SessionTokenManager
|
||
sessions = SessionTokenManager()
|
||
token = await sessions.create_session(user_id, username=username)
|
||
|
||
# Мониторинг
|
||
from auth.tokens.monitoring import TokenMonitoring
|
||
monitoring = TokenMonitoring()
|
||
stats = await monitoring.get_token_statistics()
|
||
```
|