Сайт, который позволяет проводить викторины в любой области знаний. На сайте можно участвовать в уже созданных викторинах, проверять свои знания, соревнуясь в эрудиции с другими пользователями, а также создавать собственные викторины.
Цель 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 соответственно и добавить их в .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: https://www.docker.com/
Запустите Docker
В терминале:
docker-compose --env-file brainforces/.env up