{"id":19670806,"url":"https://github.com/fivan999/brainforces","last_synced_at":"2026-04-06T02:32:32.028Z","repository":{"id":159441634,"uuid":"621958603","full_name":"fivan999/BrainForces","owner":"fivan999","description":"сайт для проведения онлайн соревновательных викторин","archived":false,"fork":false,"pushed_at":"2023-12-02T20:26:28.000Z","size":5232,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-03T12:15:19.864Z","etag":null,"topics":["celery","django","docker","elasticsearch","oauth2","postgresql","python","quiz","rabbitmq","redis"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fivan999.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-31T19:07:38.000Z","updated_at":"2025-12-22T02:25:55.000Z","dependencies_parsed_at":"2025-02-27T04:44:44.437Z","dependency_job_id":"d9235fc9-4d12-41b2-ab50-8d3d242683e0","html_url":"https://github.com/fivan999/BrainForces","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fivan999/BrainForces","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fivan999%2FBrainForces","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fivan999%2FBrainForces/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fivan999%2FBrainForces/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fivan999%2FBrainForces/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fivan999","download_url":"https://codeload.github.com/fivan999/BrainForces/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fivan999%2FBrainForces/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31457607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["celery","django","docker","elasticsearch","oauth2","postgresql","python","quiz","rabbitmq","redis"],"created_at":"2024-11-11T17:07:14.696Z","updated_at":"2026-04-06T02:32:32.012Z","avatar_url":"https://github.com/fivan999.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BrainForces\n[![Django CI](https://github.com/fivan999/BrainForces/actions/workflows/django.yml/badge.svg)](https://github.com/fivan999/BrainForces/actions/workflows/django.yml)\n[![Python package](https://github.com/fivan999/BrainForces/actions/workflows/python-package.yml/badge.svg)](https://github.com/fivan999/BrainForces/actions/workflows/python-package.yml)\n## Суть проекта\n### BrainForces\nСайт, который позволяет проводить викторины в любой области знаний. На сайте можно участвовать в уже созданных викторинах, проверять свои знания, соревнуясь в эрудиции с другими пользователями, а также создавать собственные викторины.\n\n#### Мотивация\nЦель BrainForces - предложить удобную платформу для создания, проведения соревнований в виде викторин.\n\n- **Проведение** викторин онлайн в режиме соревнования\n- **Дорешивание** вопросов в архиве\n- **Организации** - группы людей, с помощью которых пользователи могут объединяться по интересам, создавать собственные викторины и делиться новостями\n- **Профиль пользователя**, в котором можно посмотреть и изменить свои данные, посмотреть историю соревнований и посылок по вопросам\n- **Рейтинг пользователя**, основанный на результатах викторин, в которых он принял участие\n#### Целевая аудитория\nПроект направлен на людей, которым интересно расширить свой кругозор в различных областях знаний, а также на тех, кто готов поделиться своими знаниями. Также проект может быть использован для создания и проведения тестов в образовательных учреждениях.\n\n#### Подход\nДля создания сайта использовался язык программирования **Python** и его веб-фреймворк **Django**. Также были использованы дополнительные технологии, такие как:\n\n- **Celery** для асинхронной отправки электронных писем пользователю\n- **RabbitMQ** в качестве брокера задач для Celery\n- **Redis** для быстрого подсчета количества просмотров у постов\n- протокол авторизации **OAuth 2** для входа пользователей через сторонние сервисы, такие как Yandex и Google\n- **PostgreSQL** в качестве базы данных\n- Полнотекстовый поиск с помощью **elasticsearch**\n\nСайт: https://brainforces.ru/\n## Установка и запуск\n### Клонировать репозиторий\n```\ngit clone https://github.com/fivan999/BrainForces\n```\n### Конфигурация\nСоздайте .env файл в папке brainforces.\u003cbr\u003e\n\nВ нем нужно указать значения:\u003cbr\u003e\n- SECRET_KEY (ваш секретный ключ, по умолчанию - default)\u003cbr\u003e\n- DEBUG (включать ли режим дебага, по умолчанию - True)\u003cbr\u003e\n- ALLOWED_HOSTS (если включен DEBUG, он ['*'], иначе по умолчанию - 127.0.0.1)\u003cbr\u003e\n- INTERNAL_IPS (для debug_toolbar, по умолчанию - 127.0.0.1) \u003cbr\u003e\n- LOGIN_ATTEMPTS (количество попыток входа, после которого аккаунт становится неактивным, по умолчанию - 3) \u003cbr\u003e\n- USER_IS_ACTIVE (активный ли пользователь сразу после регистрации, по умолчанию - false) \u003cbr\u003e\n- DB_NAME (имя базы данных, по умолчанию - postgres)\n- DB_HOST (хост базы данных, по умолчанию - 127.0.0.1)\n- DB_USER (имя пользователя на сервере, по умолчанию - postgres)\n- DB_PASS (пароль базы данных, по умолчанию - password)\n- REDIS_HOST (хост базы данных redis, по умолчанию - localhost)\n- REDIS_DB=0 (номер базы данных redis, по умолчанию - 0)\n- ELASTICSEARCH_HOST (хост elasticsearch, по умолчанию - localhost)\n- CELERY_TASK_ALWAYS_EAGER (выполнять ли задания от celery синхронно, запуск rabbitmq и celery не требуется при true, по умолчанию - true)\n- RABBITMQ_HOST (хост брокера rabbitmq)\n- RABBITMQ_USER (имя пользователя rabbitmq)\n- RABBITMQ_PASS (пароль rabbitmq)\n#### Настройка отправки почты\nЕсли вы хотите, чтобы письма только сохранялись в папке sent_emails, в .env файле укажите USE_SMTP=false\u003cbr\u003e\nИначе нужно указать несколько значений:\n- USE_SMTP=True\n- EMAIL_HOST (смтп, которое вы используете)\n- EMAIL_PORT (порт нужного смтп)\n- EMAIL_USE_TLS (true или false, по умолчанию - true), EMAIL_USE_SSL (true или false, по умолчанию - false). True должно быть только одно из двух значений\n- EMAIL_HOST_USER (почта)\n- EMAIL_HOST_PASSWORD (пароль от почты)\n#### Настройка аутентификации через Google и Yandex\nЕсли вы хотите, чтобы в проекте была доступна такая функция, нужно получить ключи доступа от Google и Yandex соответственно и добавить их в .env файл\n- SOCIAL_AUTH_GOOGLE_OAUTH2_KEY (ключ от Google)\n- SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET (секретный ключ от Google)\n- SOCIAL_AUTH_YANDEX_OAUTH2_KEY (ключ от Yandex)\n- SOCIAL_AUTH_YANDEX_OAUTH2_SECRET (секретный ключ от Yandex)\u003cbr\u003e\nПример .env файла с рабочими конфигурациями - .env.example\n## Запуск с помощью Docker\nСкачайте Docker: https://www.docker.com/\u003cbr\u003e\nЗапустите Docker\u003cbr\u003e\nВ терминале:\n```\ndocker-compose --env-file brainforces/.env up \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffivan999%2Fbrainforces","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffivan999%2Fbrainforces","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffivan999%2Fbrainforces/lists"}