Skip to content

сайт для проведения онлайн соревновательных викторин

Notifications You must be signed in to change notification settings

fivan999/BrainForces

Repository files navigation

BrainForces

Django CI Python package

Суть проекта

BrainForces

Сайт, который позволяет проводить викторины в любой области знаний. На сайте можно участвовать в уже созданных викторинах, проверять свои знания, соревнуясь в эрудиции с другими пользователями, а также создавать собственные викторины.

Мотивация

Цель BrainForces - предложить удобную платформу для создания, проведения соревнований в виде викторин.

  • Проведение викторин онлайн в режиме соревнования
  • Дорешивание вопросов в архиве
  • Организации - группы людей, с помощью которых пользователи могут объединяться по интересам, создавать собственные викторины и делиться новостями
  • Профиль пользователя, в котором можно посмотреть и изменить свои данные, посмотреть историю соревнований и посылок по вопросам
  • Рейтинг пользователя, основанный на результатах викторин, в которых он принял участие

Целевая аудитория

Проект направлен на людей, которым интересно расширить свой кругозор в различных областях знаний, а также на тех, кто готов поделиться своими знаниями. Также проект может быть использован для создания и проведения тестов в образовательных учреждениях.

Подход

Для создания сайта использовался язык программирования Python и его веб-фреймворк Django. Также были использованы дополнительные технологии, такие как:

  • Celery для асинхронной отправки электронных писем пользователю
  • RabbitMQ в качестве брокера задач для Celery
  • Redis для быстрого подсчета количества просмотров у постов
  • протокол авторизации OAuth 2 для входа пользователей через сторонние сервисы, такие как Yandex и Google
  • PostgreSQL в качестве базы данных
  • Полнотекстовый поиск с помощью elasticsearch

Сайт: https://brainforces.ru/

Установка и запуск

Клонировать репозиторий

git clone https://github.com/fivan999/BrainForces

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

Создайте .env файл в папке brainforces.

В нем нужно указать значения:

  • SECRET_KEY (ваш секретный ключ, по умолчанию - default)
  • DEBUG (включать ли режим дебага, по умолчанию - True)
  • ALLOWED_HOSTS (если включен DEBUG, он ['*'], иначе по умолчанию - 127.0.0.1)
  • INTERNAL_IPS (для debug_toolbar, по умолчанию - 127.0.0.1)
  • LOGIN_ATTEMPTS (количество попыток входа, после которого аккаунт становится неактивным, по умолчанию - 3)
  • USER_IS_ACTIVE (активный ли пользователь сразу после регистрации, по умолчанию - false)
  • DB_NAME (имя базы данных, по умолчанию - postgres)
  • DB_HOST (хост базы данных, по умолчанию - 127.0.0.1)
  • DB_USER (имя пользователя на сервере, по умолчанию - postgres)
  • DB_PASS (пароль базы данных, по умолчанию - password)
  • REDIS_HOST (хост базы данных redis, по умолчанию - localhost)
  • REDIS_DB=0 (номер базы данных redis, по умолчанию - 0)
  • ELASTICSEARCH_HOST (хост elasticsearch, по умолчанию - localhost)
  • CELERY_TASK_ALWAYS_EAGER (выполнять ли задания от celery синхронно, запуск rabbitmq и celery не требуется при true, по умолчанию - true)
  • RABBITMQ_HOST (хост брокера rabbitmq)
  • RABBITMQ_USER (имя пользователя rabbitmq)
  • RABBITMQ_PASS (пароль rabbitmq)

Настройка отправки почты

Если вы хотите, чтобы письма только сохранялись в папке sent_emails, в .env файле укажите USE_SMTP=false
Иначе нужно указать несколько значений:

  • USE_SMTP=True
  • EMAIL_HOST (смтп, которое вы используете)
  • EMAIL_PORT (порт нужного смтп)
  • EMAIL_USE_TLS (true или false, по умолчанию - true), EMAIL_USE_SSL (true или false, по умолчанию - false). True должно быть только одно из двух значений
  • EMAIL_HOST_USER (почта)
  • EMAIL_HOST_PASSWORD (пароль от почты)

Настройка аутентификации через Google и Yandex

Если вы хотите, чтобы в проекте была доступна такая функция, нужно получить ключи доступа от Google и Yandex соответственно и добавить их в .env файл

  • SOCIAL_AUTH_GOOGLE_OAUTH2_KEY (ключ от Google)
  • SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET (секретный ключ от Google)
  • SOCIAL_AUTH_YANDEX_OAUTH2_KEY (ключ от Yandex)
  • SOCIAL_AUTH_YANDEX_OAUTH2_SECRET (секретный ключ от Yandex)
    Пример .env файла с рабочими конфигурациями - .env.example

Запуск с помощью Docker

Скачайте Docker: https://www.docker.com/
Запустите Docker
В терминале:

docker-compose --env-file brainforces/.env up 

About

сайт для проведения онлайн соревновательных викторин

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published