core/docs
Untone eb2140bcc6
All checks were successful
Deploy on push / deploy (push) Successful in 6s
0.7.7-topics-editing
2025-07-03 12:15:10 +03:00
..
admin-panel.md Squashed new RBAC 2025-07-02 22:30:21 +03:00
api.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
auth-architecture.md token-storage-refactored 2025-06-02 21:50:58 +03:00
auth-migration.md token-storage-refactored 2025-06-02 21:50:58 +03:00
auth-system.md token-storage-refactored 2025-06-02 21:50:58 +03:00
auth.md 0.7.7-topics-editing 2025-07-03 12:15:10 +03:00
caching.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
comments-pagination.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
features.md Squashed new RBAC 2025-07-02 22:30:21 +03:00
follower.md 0.5.8-panel-upgrade-community-crud-fix 2025-06-30 21:25:26 +03:00
load_shouts.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
oauth-deployment.md 0.5.8-panel-upgrade-community-crud-fix 2025-06-30 21:25:26 +03:00
oauth-implementation.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
oauth-setup.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
oauth.md 0.5.8-panel-upgrade-community-crud-fix 2025-06-30 21:25:26 +03:00
rating.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
rbac-system.md 0.7.7-topics-editing 2025-07-03 12:15:10 +03:00
react-to-solidjs.md Squashed new RBAC 2025-07-02 22:30:21 +03:00
README.md 0.7.7-topics-editing 2025-07-03 12:15:10 +03:00
redis-schema.md maintainance 2025-06-16 20:20:23 +03:00
security.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00

Документация 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: Система ролей reader/author/artist/expert/editor/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()