Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fivan999/brainforces

сайт для проведения онлайн соревновательных викторин
https://github.com/fivan999/brainforces

celery django docker elasticsearch oauth2 postgresql python quiz rabbitmq redis

Last synced: about 1 month ago
JSON representation

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

Awesome Lists containing this project

README

        

# BrainForces
[![Django CI](https://github.com/fivan999/BrainForces/actions/workflows/django.yml/badge.svg)](https://github.com/fivan999/BrainForces/actions/workflows/django.yml)
[![Python package](https://github.com/fivan999/BrainForces/actions/workflows/python-package.yml/badge.svg)](https://github.com/fivan999/BrainForces/actions/workflows/python-package.yml)
## Суть проекта
### 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
```