core/docs
Untone ffe19ef238
All checks were successful
Deploy on push / deploy (push) Successful in 7s
follow-fix
2025-05-31 17:21:14 +03:00
..
auth.md shout-id-fox+test-imports-fix 2025-05-29 23:40:27 +03:00
caching.md create_draft fix 2025-05-21 18:29:46 +03:00
comments-pagination.md commented->comments_count 2025-03-26 08:25:18 +03:00
features.md upgrade schema, resolvers, panel added 2025-05-16 09:23:48 +03:00
follower.md follow-fix 2025-05-31 17:21:14 +03:00
load_shouts.md v0.4.7 2024-11-20 23:59:11 +03:00
oauth-deployment.md unfollow-fix 2025-05-31 17:18:31 +03:00
oauth-implementation.md unfollow-fix 2025-05-31 17:18:31 +03:00
rating.md v0.4.7 2024-11-20 23:59:11 +03:00
README.md minor fixes 2025-05-21 22:26:39 +03:00

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

Модули

Аутентификация и авторизация

Подробная документация: auth.md

Основные возможности:

  • Гибкая система аутентификации с использованием локальной БД и Redis
  • Система ролей и разрешений (RBAC)
  • OAuth интеграция (Google, Facebook, GitHub)
  • Защита от брутфорс атак
  • Управление сессиями через Redis
  • Мультиязычные email уведомления
  • Страница авторизации для админ-панели

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

# settings.py
JWT_SECRET_KEY = "your-secret-key"  # секретный ключ для JWT токенов
SESSION_TOKEN_LIFE_SPAN = 60 * 60 * 24 * 30  # время жизни сессии (30 дней)

Реакции и комментарии

Модуль обработки пользовательских реакций и комментариев.

Основные возможности:

  • Создание, обновление и удаление реакций (лайки, дизлайки, комментарии)
  • Иерархические комментарии с пагинацией корневых и дочерних
  • Расчет статистики (счетчик комментариев, рейтинг)
  • Автоматическое добавление/снятие статуса "featured" для публикаций
  • Оптимизация запросов с использованием distinct() для предотвращения дублирования

Особенности реализации:

  • Физическое удаление рейтинговых реакций и логическое удаление комментариев (поле deleted_at)
  • Использование distinct() для предотвращения дублирования результатов при JOIN с eager loading
  • Эффективная обработка иерархических данных с помощью специализированных GraphQL запросов

Ключевые функции:

  • get_reactions_with_stat(q, limit, offset) - получение реакций со статистикой
  • load_comments_branch(shout, parent_id, limit, offset, sort, children_limit, children_offset) - загрузка иерархических комментариев с пагинацией

Административный интерфейс

Основные возможности:

  • Защищенный доступ только для авторизованных пользователей с ролью admin
  • Автоматическая проверка прав пользователя
  • Отдельная страница входа для неавторизованных пользователей
  • Проверка доступа по email или правам в системе RBAC

Маршруты:

  • /admin - административная панель с проверкой прав доступа

Запуск сервера

Стандартный запуск

python main.py

Запуск с поддержкой HTTPS

Для локальной разработки с HTTPS используйте скрипт run.py с инструментом mkcert:

# Установите mkcert
# macOS:
brew install mkcert
# Linux:
# sudo apt install mkcert (или эквивалент для вашего дистрибутива)
# Windows:
# choco install mkcert

# Установите локальный CA
mkcert -install

# Запуск с HTTPS на порту 8000 через Granian
python run.py --https

# Запуск с HTTPS на другом порту
python run.py --https --port 8443

# Запуск с несколькими рабочими процессами
python run.py --https --workers 4

# Запуск с указанием домена для сертификата
python run.py --https --domain "localhost.localdomain"

При первом запуске будут автоматически сгенерированы доверенные локальные сертификаты с помощью mkcert.

Преимущества mkcert:

  • Сертификаты распознаются браузером как доверенные (нет предупреждений)
  • Работает на всех платформах (macOS, Linux, Windows)
  • Простая установка и настройка