core/docs/README.md
Untone 952b294345
All checks were successful
Deploy on push / deploy (push) Successful in 6s
0.5.8-panel-upgrade-community-crud-fix
2025-06-30 21:25:26 +03:00

5.8 KiB
Raw Blame History

Документация Discours.io API

🚀 Быстрый старт

Запуск локально

# Стандартный запуск
python main.py

# С HTTPS (требует mkcert)
python dev.py

📚 Документация

Авторизация и безопасность

Функциональность

Администрирование

  • Админ-панель: Управление пользователями, ролями, переменными среды
  • Управление публикациями: Просмотр, поиск, фильтрация по статусу (опубликованные/черновики/удаленные)
  • Управление топиками: Упрощенное редактирование топиков с иерархическим отображением
    • Клик по строке: Модалка редактирования открывается при клике на строку таблицы
    • Ненавязчивый крестик: Серая кнопка "×" для удаления, краснеет при hover
    • Простой HTML редактор: Обычный contenteditable div с моноширинным шрифтом
    • Редактируемые поля: ID (просмотр), название, slug, описание, сообщество, родители
    • Дерево топиков: Визуализация родительско-дочерних связей с отступами и символами └─
    • Безопасное удаление: Предупреждения о каскадном удалении дочерних топиков
    • Автообновление: Рефреш списка после операций с корректной инвалидацией кешей
  • Просмотр данных: Body, media, авторы, темы с удобной навигацией
  • DRY принцип: Переиспользование существующих резолверов из reader.py и editor.py

API и инфраструктура

Ключевые возможности

Авторизация

  • Модульная архитектура: 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)
  • Оптимизированная сортировка авторов с кешированием по параметрам

🔧 Конфигурация

# 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

# Сессии
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()